json模块提供的方法,可以直接将python基本数据类型序列化为json字符串。
也可以将json字符串转为python的基本数据类型。
import json
dict1 = {"name":"韩梅梅","age":19,"sex":True}
print(json.dumps(dict1))
>>>{"name": "\u97e9\u6885\u6885", "age": 19, "sex": true}
json不能直接转化对象:
import json
class Card:
def __init__(self, cardnum, password, money, lock=False):
self.cardnum = cardnum
self.password = password
self.money = money
self.lock = lock
def obj2dict(card):
return {"cardnum":card.cardnum,"password":card.password,"money":card.money,"lock":card.lock}
def dict2obj(d1):
return Card(d1["cardnum"],d1["password"],d1["money"],d1["lock"])
card = Card("101110", "111", 10000)
card2 = Card("101112", "111", 10000)
card3 = Card("101113", "111", 10000)
cardlist = [card, card2, card3]
with open("jsondemo.txt","w",encoding="utf-8") as f:
jstr = json.dumps(cardlist, default=obj2dict)
f.write(jstr)
with open("jsondemo.txt","r",encoding="utf-8") as f2:
obj = json.loads(f2.read(),object_hook=dict2obj)
json.dumps(obj,default)
obj:被序列化的对象
default:函数,将对象转为字典的函数
功能:将对象序列化为json字符串
json.loads(s,object_hook)
参数一:字符串
参数二:将字典转为对象的函数
功能:将字符串反序列化成对象
json.dump(obj,f,default)
obj:被序列化的对象
f:打开的文件对象
default:函数,将对象转为字典的函数
功能:将对象序列化为json字符串并且写入到打开的文件对象中
json.load(f,object_hook)
参数一:打开的文件对象
参数二:将字典转为对象的函数
功能:将打开的文件对象的内容读取并且反序列化成对象