讲解Python3内置模块之json编码解码方法
简介
JSON(JavaScript Object Notation) 它是一种基于ECMAScript的子集的轻量级数据交换格式。 JSON采用完全独立于语言的文本格式,使JSON成为理想的数据交换格式,易于阅读和编写,也易于机器分析和生成,在接口数据开发和传输中非常常用。
在Python3中,我们使用内置模块json解码和编码JSON对象。
json模块提供了四个功能:dumps、dump、loads、load
dumps 将数据类型转换为字符串
dump 将数据类型转换为字符串并存储在文件中
loads 将字符串转换为数据类型
load 打开文件,从字符串转换为数据类型
dumps编码
我们利用 dumps 将Python对象编码为 JSON对象 ,当然 dumps 只完成了将序列化为str,并且 dump 必须传输文件描述符,并将序列化的str保存到文件中。
编码字典
importjson odata={'www':1,'pythontab.com':2,'Python3':3} jdata=json.dumps(odata) print(jdata)
示例结果:
{"www":1,"pythontab.com":2,"Python3":3}
编码列表
importjson ldata=[100,'Python2',{'www':1,'pythontab.com':2,'Python3':3}] jdata=json.dumps(ldata) print(jdata)
示例结果:
[100,"Python3",{"www":1,"pythontab.com":2,"Python3":3}]
编码字符串
importjson sdata='Python3' jdata=json.dumps(sdata) print(jdata)
示例结果:
"Python3"
JSON的格式输出
将以下数组转换为标准json格式
importjson 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 将数组元素和对象成员美化输出为该值指定的缩进等级。
转换关系对照表
以下是Python原始类型向JSON对象的转换对照表:
loads解码
我们利用 loads 用于解码 JSON对象 。解码结果是相应的 Python对象 类型。当然 loads 只完成反序列化, load 只接收文件描述符,完成读取文件和反序列化。
例如,我们用它来解码上一个示例的数据
importjson 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]
可以看出,我们成功地解码了上一个例子中的JSON对象,最终的解码结果是Python列表中的对象类型,与Python对象JSON对象对照表中的结果一致。
总结
json分析和编码模块json在Python3中使用起来非常简单, 功能也非常齐全,可以完全满足我们的日常需求。