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数据库