如何用Python编写JSON?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式, 由于其格式简单、易于阅读、易于编写,广泛应用于Web前后端数据传输和存储。Python是一种高效、易用的编程语言,提供了丰富的JSON处理工具,轻松实现JSON编写和解析。
本文将介绍如何用Python编写JSON,包括以下主要内容:
- 什么是JSON?
- JSON的Python模块
- 如何编写JSON
- 简单JSON对象
- JSON对象数组
- 处理JSON中的特殊字符
- 转义字符
- 非ASCII字符
- 将Python对象转换为JSON
- 将JSON解析为Python对象
- 总结
什么是JSON?
JSON是一种数据交换格式,常用于Web前后端数据传输和存储。JSON格式具有以下特点:
- 简单:由键值对组成,易于理解和调试。
- 轻量:格式简单,相对于XML格式,文本数据更小。
- 语言无关:JSON格式是一种语言无关的格式,可以在任何编程语言中解析和生成。
一个简单的JSON对象示例如下:
{
"name": "John",
"age": 30,
"city": "New York"
}
JSON的Python模块
Python提供了处理JSON格式的模块,常用的有:
- json:标准库,用于编码和解码JSON格式。
- simplejson:第三方库,可以更快地处理JSON数据。
本文主要使用标准库json进行JSON编写和解析。
如何编写JSON
简单JSON对象
一个简单的JSON对象由一些属性(键值对)组成,使用花括号作为容器,属性之间使用逗号分隔。Python中可以用字典(dict)类型表示,然后使用json.dumps()函数将字典转换为JSON格式。
import json
person = {'name': 'John', 'age': 30, 'city': 'New York'}
json_str = json.dumps(person)
print(json_str)
输出结果:
{
"name": "John",
"age": 30,
"city": "New York"
}
JSON对象数组
如果要编写包含多个JSON对象的数组,使用方括号作为容器,每个对象之间使用逗号分隔。
import json
people = [
{'name': 'John', 'age': 30},
{'name': 'Mary', 'age': 25},
{'name': 'Bob', 'age': 35}
]
json_str = json.dumps(people)
print(json_str)
输出结果:
[
{"name": "John", "age": 30},
{"name": "Mary", "age": 25},
{"name": "Bob", "age": 35}
]
处理JSON中的特殊字符
转义字符
如果JSON对象中有特殊字符,Python会自动将其转义。例如,如果对象中包含双引号或反斜杠,则会将其转义为 \\” 和 \\。如果要手动编写包含转义字符的JSON对象,可以通过添加转义字符\来实现。
import json
person = {'name': 'John "the killer"', 'age': 30}
json_str = json.dumps(person)
print(json_str)
输出结果:
{"name": "John \"the killer\"", "age": 30}
非ASCII字符
如果JSON对象中包含非ASCII字符(例如中文),则必须使用Unicode编码。Python中可以将其表示为Unicode字符串。
import json
person = {'name': '张三', 'age': 30}
json_str = json.dumps(person, ensure_ascii=False)
print(json_str)
输出结果:
{"name": "张三", "age": 30}
将Python对象转换为JSON
使用json.dumps()函数可以将Python对象转换为JSON格式的字符串。该函数的参数包括:
- obj:要转换为JSON格式的Python对象。
- indent:格式化输出的缩进数目。
- sort_keys:是否按照键排序。
import json
person = {'name': 'John', 'age': 30, 'city': 'New York'}
json_str = json.dumps(person, indent=4, sort_keys=True)
print(json_str)
输出结果:
{
"age": 30,
"city": "New York",
"name": "John"
}
将JSON解析为Python对象
使用json.loads()函数可以将JSON字符串解析为Python对象,常用于Web前后端数据传输。该函数的参数是一个JSON格式的字符串。
import json
json_str = '{"name": "John", "age": 30, "city": "New York"}'
person = json.loads(json_str)
print(person)
print(person['name'])
print(person['age'])
print(person['city'])
输出结果:
{'name': 'John', 'age': 30, 'city': 'New York'}
John
30
New York
总结
本文介绍了如何用Python编写JSON,包括简单JSON对象、JSON对象数组、处理特殊字符、将Python对象转换为JSON和将JSON解析为Python对象。Python内置的json模块提供了丰富的JSON处理工具,可以轻松地处理JSON数据。