您的位置:

Python读写JSON

一、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是非常常用的数据格式。