JSON序列和反序列1

python3 JSON

1.Python3 使用 json 模块来对 JSON 数据进行编解码。

a.json.dumps():编码,将 python类型 序列为 json字符串类型。

b.json.loads():解码,将 json类型 反序列为 python类型。

c.json.dump() : 编码,操作文件,序列化

d.json.load() :解码,操作文件,反序列

2.python类型和json类型之间的序列和反序列

import json

#列表list序列化为json
list = ['a','b','c','d','e']
data = json.dumps(list)
print("python:",type(list),list)
print("json序列:",type(data),data)
#json反序列为python类型
cover = json.loads(data)
print("json反序列后",type(cover),cover)


#元组序列化为json
tuple = (1,2,3,4,5,6)
data1 = json.dumps(tuple)
print("python:",type(tuple),tuple)
print("json序列:",type(data1),data1)
#json反序列为python类型
cover1 = json.loads(data1)
print("json反序列后",type(cover1),cover1)

#字典序列化为json
dict = {'name':'jack','age':'24','sex':'F'}
data2 = json.dumps(dict)
print("python:",type(dict),dict)
print("json序列:",type(data2),data2)
#json反序列为python类型
cover2 = json.loads(data2)
print("json反序列后",type(cover2),cover2)

运行结果:

列表: <class 'list'> ['a', 'b', 'c', 'd', 'e']
json序列: <class 'str'> ["a", "b", "c", "d", "e"]
json反序列后 <class 'list'> ['a', 'b', 'c', 'd', 'e']
元组: <class 'tuple'> (1, 2, 3, 4, 5, 6)
json序列: <class 'str'> [1, 2, 3, 4, 5, 6]
json反序列后 <class 'list'> [1, 2, 3, 4, 5, 6]
字典: <class 'dict'> {'name': 'jack', 'age': '24', 'sex': 'F'}
json序列: <class 'str'> {"name": "jack", "age": "24", "sex": "F"}
json反序列后 <class 'dict'> {'name': 'jack', 'age': '24', 'sex': 'F'}

从运行结果可以看出,python数据类型json序列都是字符串类型

3.文件操作,实现json的序列和反序列

序列

#正常操作

dict ={'name':'lisi','number':'0102','sex':'M'}

with open('d:/test.txt','w+') as f1:
    f1.write(dict)
print("到这里了")

运行结果:

TypeError: write() argument must be str, not dict #文件写入必须是字符串,不可以是字典

#文件操作,使用json

dict ={'name':'lisi','number':'0102','sex':'M'}
with open('d:/test.txt','w+') as f:
    json.dump(dict,f)  #文件 序列

运行结果:成功

反序列

with open('d:/test.txt') as f1:
    data = json.load(f1) #文件 反序列
    print(data)

原文地址:https://www.cnblogs.com/mygodswangzi/p/11904564.html