1.介绍
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,是基于ECMAScript的一个子集。JSON采用完全独立于语言的文本格式,这些特性是JSON成为理想的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,在接口数据开发和传输中非常常用。
dumps:把数据类型转换成字符串
dump:把数据类型转换成字符串并存储在文件中
loads:把字符串转换成数据类型
load:把文件打开从字符串转换成数据类型
2.转换关系对照表
Python | JSON |
dict | object |
list,tuple | array |
str,unicode | string |
int,long,float | number |
True | true |
False | false |
None | null |
3.dumps编码
我们利用dumps将Python对象编码为JSON对象,dumps只完成了序列化为str,而dump必须传文件描述符,将序列化的str保存到文件中。
编码字典
import json
odata = {'www':1,'pythontab.com':2,'Python3':3}
jdata = json.dumps(odata)
print(jdata)
结果:
{"www": 1, "pythontab.com": 2, "Python3": 3}
编码列表
import json
ldata = [100,'Python2',{'www':1,'pythontab.com':2,'Python3':3}]
jdata = json.dumps(ldata)
print(jdata)
结果:
[100, "Python2", {"www": 1, "pythontab.com": 2, "Python3": 3}]
编码字符串
import json
sdata = 'Python3'
jdata = json.dumps(sdata)
print(jdata)
结果:
"Python3"
格式化输出JSON
将下面的数组,转化为标准的json格式
import json
ldata = ['Python3',100,{'www':1,'pythontab.com':2,'Python3':3},True]
jdata = json.dumps(ldata,sort_keys=True,indent=4)
print(jdata)
结果:
[
"Python3",
100,
{
"Python3": 3,
"pythontab.com": 2,
"www": 1
},
true
]
参数解析:
sort_keys=True,表示字典的输出会以键的顺序排序
indent=4,表示缩进为4,如果indent是一个非负整数或者字符串,那么JSON数组元素和对象成员会被美化输出为该值指定的缩进等级。
4.loads解码
我们利用loads用于解码JSON对象,解码结果是与之对应的Python对象类型,loads只完成了反序列化,load只接收文件描述符,完成读取文件和反序列化。
解码上个示例的数据
import json
jsondata = '''
[
"Python3",
100,
{
"Python3": 3,
"pythontab.com": 2,
"www": 1
},
true
]
'''
ldata = json.loads(jsondata)
print(type(ldata))
print(ldata)
结果:
<class 'list'>
['Python3', 100, {'Python3': 3, 'pythontab.com': 2, 'www': 1}, True]