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

Posted 孤寒者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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字符串。

以上是关于Python每日一练——数据存储第四关:如何将一个Python对象转换为对应的JSON字符串的主要内容,如果未能解决你的问题,请参考以下文章

Python每日一练——数据存储第三关:如何将一个JSON文档映射为Python对象

Python每日一练——数据存储第二关:XML文档和字典的互转

Python每日一练——数据存储第五关:操作SQLite数据库

Python每日一练——数据存储第六关:操作MySQL数据库

Python每日一练——数据存储第八关:操作MongoDB数据库

Python每日一练——数据存储第七关:ORM框架知多少