将类的实例转换成JSON字符串
将一个对象类型转换成JSON字符串
- 创建一个类
- 并将类进行实例化,传入参数使用
import json
class Product:
def __init__(self,name,price,count):
self.name = name
self.price = price
self.count = count
product = Product('iPhonex',5000,3)
- 创建一个字典类转换函数,用来返回所有值
def productToDict(obj):
return{
'name':obj.name,
'price':obj.price,
'count':obj.count
}
- 将类转成JSON并打印
jsonStr = json.dumps(product,default=productToDict,ensure_ascii=False)
print(jsonStr)
hexianling.png
完整代码如下:
- ensure_ascii=False: 默认值是True, 如何是True会中文有乱码
class Product:
def __init__(self,name,price,count):
self.name = name
self.price = price
self.count = count
product = Product('iPhonex',5000,3)
def productToDict(obj):
return{
'name':obj.name,
'price':obj.price,
'count':obj.count
}
jsonStr = json.dumps(product,default=productToDict,ensure_ascii=False)
print(jsonStr)
将转换函数返回的JSON串,重新转换成JSON类型字符串
- 创建类,将函数转成字典
class Product:
def __init__(self,d):
self.__dict__ = d #将属性传给构建的字典
- 读取json文件中的内容
f = open('C:\\PyTest\\Selenium_OpenSchools\\test_selenium\\03-数据存储\\files\\product.json','r')
jsonStr1 = f.read()
- 将JSON串中的内容转成字典类型值
products1 = json.loads(jsonStr1,object_hook= Product)
print(products1)
- 使用dumps函数将内容重新输出,显示格式JSON
jsonStrNew = json.dumps(products1,default=productToDict,ensure_ascii=False)
print(jsonStrNew)
完整代码如下:
import json
def productToDict(obj):
return{
'name':obj.name,
'price':obj.price,
'count':obj.count
}
class Product:
def __init__(self,d):
self.__dict__ = d #将属性传给构建的字典
f = open('C:\\PyTest\\Selenium_OpenSchools\\test_selenium\\03-数据存储\\files\\product.json','r')
jsonStr1 = f.read()
hexianling.png
总结
json模块的dumps用于将对象转成jsom字符串,通过default参数指定一个转换函数,可以在该函数中提取对象的属性值,并生成JSON对象,最后dumps负责将转换函数返回的JSON对象转成JSON字符串
加油 2020-3-7
网友评论