Python解析JSON数据完整指南:模块用法与类型转换

江屿
江屿
发布时间:2026-10-15 | 2人浏览过
原创

本文详细介绍Python3中json模块对JSON数据的编解码功能。涵盖json.dumps、loads、dump、load四个核心函数的具体用法,解析Python原始类型与JSON类型之间的相互转换规则,并通过完整代码示例演示字典转JSON字符串、文件读写及eval函数的注意事项,帮助开发者掌握JSON数据处理技巧。

Python解析JSON概述

JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,被广泛应用于网络数据传输。在Python3环境中,开发者可以利用内置的json模块对JSON数据进行编码和解码操作,该模块主要提供了四个核心操作函数来实现这一功能。

需要明确的是,类文件对象指的是具备read()或write()方法的对象实例。例如,通过f = open('a.txt','r')打开文件后,变量f因拥有read()方法而被视为类文件对象,这是进行文件读写操作的基础概念。

Python与JSON类型转换规则

在执行JSON的编码与解码过程时,Python的原始数据类型会与JSON类型发生相互转换。具体的类型映射关系如下表所示,理解这些对应关系有助于避免数据转换错误。

当Python数据被编码为JSON格式时,类型转换遵循以下对应规则:

Python编码为JSON类型转换表

Python JSON
dict object
list, tuple array
str string
int, float, int- & float-derived Enums number
True true
False false
None null

反之,当JSON数据被解码为Python对象时,类型转换遵循以下对应规则:

JSON解码为Python类型转换表

JSON Python
object dict
array list
string str
number (int) int
number (real) float
true True
false False
null None

JSON操作代码示例

以下是具体的操作示例,展示如何在实际代码中应用上述函数:


import json
 
data = {
    'name': 'pengjunlee',
    'age': 32,
    'vip': True,
    'address': {'province': 'GuangDong', 'city': 'ShenZhen'}
}
# 将 Python 字典类型转换为 JSON 对象
json_str = json.dumps(data)
print(json_str) # 结果 {"name": "pengjunlee", "age": 32, "vip": true, "address": {"province": "GuangDong", "city": "ShenZhen"}}
 
# 将 JSON 对象类型转换为 Python 字典
user_dic = json.loads(json_str)
print(user_dic['address']) # 结果 {'province': 'GuangDong', 'city': 'ShenZhen'}
 
# 将 Python 字典直接输出到文件
with open('pengjunlee.json', 'w', encoding='utf-8') as f:
    json.dump(user_dic, f, ensure_ascii=False, indent=4)
 
# 将类文件对象中的JSON字符串直接转换成 Python 字典
with open('pengjunlee.json', 'r', encoding='utf-8') as f:
    ret_dic = json.load(f)
    print(type(ret_dic)) # 结果 <class 'dict'>
    print(ret_dic['name']) # 结果 pengjunlee

值得注意的是,虽然使用eval()函数可以实现简单的字符串到Python类型的转换,但在处理JSON数据时,建议优先使用json模块以确保安全性和规范性。


user1 = eval('{"name":"pengjunlee"}')
print(user1['name']) # 结果 pengjunlee

至此,关于使用Python解析JSON的实现示例介绍完毕。如需了解更多Python解析JSON的相关内容,建议搜索本站历史文章或继续浏览后续相关文章,感谢大家的支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表