Python每日一练——数据存储第四关:如何将一个Python对象转换为对应的JSON字符串

面试题第四关:

第一部分——考点:

  • dumps函数的用法。

第二部分——面试题:

1.面试题一:将一个Python对象转换为对应的JSON字符串。

2.面试题二:将对象列表转换为JSON数组。


第三部分——解析:

面试题一 之 将一个Python对象转换为对应的JSON字符串:

  • 使用dumps()函数,关键点是使用转换函数~
# coding=utf-8
# _author__ = 孤寒者
import json


class Product:
    def __init__(self, name, age, height):
        self.name = name
        self.age = age
        self.height = height

product = Product('孤寒者', 18, 130)

def product2Dict(obj):
    return {
    
    
        'name': obj.name,
        'age': obj.age,
        'height': obj.height
    }

# dumps()方法的default参数指定转换函数。                
jsonStr = json.dumps(product, default=product2Dict, ensure_ascii=False)
print(jsonStr)
print(type(jsonStr))

在这里插入图片描述

面试题二 之 将对象列表转换为JSON数组:

  • 为了实现这一功能,我们需要一个对象列表,所以我们将JSON文档(如下test.json文件)先转为对象列表(上一题中我们已经知道如何操作了~),然后再给它转为JSON数组。
[
  {
    
    
    "name": "孤寒者",
    "age": 18,
    "height": 130
  },
  {
    
    
    "name": "小张",
    "age": 18,
    "height": 80
  }
]
# coding=utf-8
# _author__ = 孤寒者
import json

class Product:
    def __init__(self, d):
        self.__dict__ = d

with open('test.json', 'r', encoding='utf-8') as f:
    jsonStr = f.read()
    products = json.loads(jsonStr, object_hook=Product)
    print(products)

在这里插入图片描述上面截图可以看出来我们确实已经将JSON文档转为对象列表了~
下面开始解题:

# coding=utf-8
# _author__ = 孤寒者
import json

class Product:
    def __init__(self, d):
        self.__dict__ = d

with open('test.json', 'r', encoding='utf-8') as f:
    jsonStr = f.read()
    products = json.loads(jsonStr, object_hook=Product)
    print(products)
    for product in products:
        print(product.name)

    print("*"*25)
    
    # 解题部分:
    def product2Dict(obj):
        return {
    
    
            'name': obj.name,
            'age': obj.age,
            'height': obj.height
        }

    jsonStr = json.dumps(products, default=product2Dict, ensure_ascii=False)
    print(jsonStr)
    print(type(jsonStr))

在这里插入图片描述


第四部分——总结:

  • json模块的dumps函数用于将对象转换为JSON字符串。
  • 通过default参数指定一个转换函数,可以在该函数中提取对象的属性值,并生成JSON对象,最后dumps负责将转换函数返回的JSON对象转换为JSON字符串。

猜你喜欢

转载自blog.csdn.net/qq_44907926/article/details/123019162
今日推荐