一、JSON简介
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,基于ECMAScript的一个子集。
它由Douglas Crockford在2001年提出,最初是为了取代XML。
JSON采用键值对的方式来描述数据,相较于XML,JSON更加简洁明了,易于使用,广泛应用于前后端数据交互、配置文件的存储等方面。
二、Python对JSON的支持
Python标准库中提供了json模块,用于编码和解码JSON数据。
json模块中包含了两种方法:dumps和loads,分别用于将Python对象编码为JSON格式的字符串和将JSON格式的字符串解码为Python对象。
三、Python对JSON的编码
Python对象可以通过dumps方法将其编码为JSON格式的字符串。
例如,将Python字典编码为JSON字符串:
import json data = {'name': '张三', 'age': 18, 'email': 'zhangsan@example.com'} json_str = json.dumps(data) print(json_str)
运行结果为:
{"name": "\u5f20\u4e09", "age": 18, "email": "zhangsan@example.com"}
JSON字符串中的中文被编码成了Unicode字符。
可以通过参数ensure_ascii=False来关闭对中文的Unicode编码,这样生成的JSON字符串中的中文将保留原样:
json_str = json.dumps(data, ensure_ascii=False) print(json_str)
运行结果为:
{"name": "张三", "age": 18, "email": "zhangsan@example.com"}
可以通过indent参数来设置JSON字符串的缩进格式。
例如,将Python字典编码为格式化的JSON字符串:
json_str = json.dumps(data, ensure_ascii=False, indent=4) print(json_str)
运行结果为:
{ "name": "张三", "age": 18, "email": "zhangsan@example.com" }
四、Python对JSON的解码
可以通过loads方法将JSON格式的字符串解码为Python对象。
例如,将JSON字符串解码为Python字典:
json_str = '{"name": "张三", "age": 18, "email": "zhangsan@example.com"}' data = json.loads(json_str) print(data) print(data['name'])
运行结果为:
{'name': '张三', 'age': 18, 'email': 'zhangsan@example.com'} 张三
五、Python读写JSON文件
可以通过Python的文件操作来读写JSON文件。
例如,将Python字典写入JSON文件:
data = {'name': '张三', 'age': 18, 'email': 'zhangsan@example.com'} with open('data.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=4)
将JSON文件读取为Python对象:
with open('data.json', 'r', encoding='utf-8') as f: data = json.load(f) print(data) print(data['name'])
运行结果为:
{'name': '张三', 'age': 18, 'email': 'zhangsan@example.com'} 张三
六、小结
Python对JSON的支持非常完善,通过json模块可以方便地编码和解码JSON数据,并支持读写JSON文件。
在使用Python进行数据交互、配置文件存储等方面,JSON是非常常用的数据格式。