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)
来源: http://www.bubuko.com/infodetail-3297347.html