Python3 json模块编码解码详解:dumps、loads与文件操作
本文详细讲解Python3中json模块的四大核心功能:dumps、dump、loads和load。通过字典、列表及字符串的编码示例,展示如何将Python对象转换为JSON格式字符串;同时演示利用loads进行解码及参数sort_keys、indent的使用。最后介绍JSON文件的标准读写流程及类型对照关系,帮助开发者掌握日常数据交换需求。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,基于ECMAScript标准子集构建。它采用完全独立于编程语言的文本格式,具备跨语言特性,既便于人类阅读与编写,也利于机器解析与生成,因此在接口数据开发与传输场景中应用广泛。
在Python3环境中,可通过内置的json模块对JSON对象进行解码和编码操作。该模块主要提供以下四个核心功能:
dumps、dump、loads、load
dumps:负责将Python数据类型转换为JSON字符串。
dump:将数据类型转换为字符串,并将其直接存储到指定文件中。
loads:负责将JSON字符串解析并转换回Python数据类型。
load:打开文件,读取其中的字符串内容并转换为Python数据类型。
dumps编码操作
使用dumps函数可将Python对象编码为JSON字符串。需注意,dumps仅完成序列化至字符串的过程;若需将序列化后的字符串保存至文件,则必须使用dump函数并传入文件描述符。
编码字典示例
import json
odata = {'www': 1, 'jb51.net': 2, 'Python3': 3}
jdata = json.dumps(odata)
print(jdata)
运行上述代码后的输出结果如下:
{"www": 1, "jb51.net": 2, "Python3": 3}
编码列表示例
import json
ldata = [100, 'Python2', {'www': 1, 'jb51.net': 2, 'Python3': 3}]
jdata = json.dumps(ldata)
print(jdata)
运行上述代码后的输出结果如下:
[100, "Python3", {"www": 1, "jb51.net": 2, "Python3": 3}]
编码字符串示例
import json
sdata = 'Python3'
jdata = json.dumps(sdata)
print(jdata)
运行上述代码后的输出结果如下:
"Python3"
JSON格式化输出
以下示例演示如何将包含多种数据类型的数组转化为标准且格式化的JSON字符串:
import json
ldata = ['Python3', 100, {'www': 1, 'jb51.net': 2, 'Python3': 3}, True]
jdata = json.dumps(ldata, sort_keys=True, indent=4)
print(jdata)
运行上述代码后的输出结果如下:
[
"Python3",
100,
{
"Python3": 3,
"jb51.net": 2,
"www": 1
},
true
]
关键参数解析:
sort_keys=True 参数设置为True时,字典输出将按键的字母顺序进行排序。
indent=4 参数指定缩进等级为4。当indent为非负整数或字符串时,JSON数组元素和对象成员将按指定的缩进等级进行美化输出,提升可读性。
类型转换对照表
以下是Python原始数据类型与JSON对象之间的标准转换对照关系:
| Python | JSON |
|---|---|
| dict | object |
| list, tuple | array |
| str, unicode | string |
| int, long, float | number |
| True | true |
| False | false |
| None | null |
loads解码操作
loads函数用于将JSON对象解码为对应的Python对象。与仅完成反序列化的loads不同,load函数专门接收文件描述符,用于读取文件内容并完成反序列化过程。
以下示例演示如何利用loads对前述编码生成的JSON数据进行解码:
import json
jsondata = '''
[
"Python3",
100,
{
"Python3": 3,
"jb51.net": 2,
"www": 1
},
true
]
'''
ldata = json.loads(jsondata)
print(type(ldata))
print(ldata)
运行上述代码后的输出结果如下:
<class 'list'>
['Python3', 100, {'Python3': 3, 'jb51.net': 2, 'www': 1}, True]
从输出结果可见,成功对前例中的JSON对象进行了解码,最终得到Python列表对象类型,这与Python对象和JSON对象的对照表结果一致。
总结
Python3中的json模块在解析和编码方面使用简便且功能齐全,足以满足日常开发中的数据交换需求。如需了解更多关于Python json模块的解析与编码技巧,可参考相关链接文章。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













