
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集,但JSON是独立于语言的,很多编程语言都支持JSON格式数据的生成和解析。
{
"name": "Alice",
"age": 30,
"city": "New York",
"isStudent": false,
"skills": ["Python", "Java", "C++"]
}[
"apple",
"banana",
"cherry",
{
"name": "Alice",
"age": 30
},
[1, 2, 3, 4, 5]
]{
"name": "Bob",
"children": [
{
"name": "Alice",
"age": 10
},
{
"name": "Charlie",
"age": 7
}
],
"address": {
"street": "123 Main St",
"city": "Anytown",
"state": "CA"
}
}Python | JSON |
|---|---|
dict | object |
list, tuple | array |
str, unicode | string |
int, long, float | number |
True | true |
False | false |
None | null |
方法名称 | 描述 |
|---|---|
json.loads() | 将JSON格式的字符串解析成Python对象(如字典或列表) |
json.dumps() | 将Python对象(如字典或列表)转换成JSON格式的字符串 |
json.load() | 从文件中读取JSON格式的数据,并解析成Python对象 |
json.dump() | 将Python对象转换成JSON格式的数据,并写入文件 |
json.JSONDecoder() | 创建一个JSON解码器对象,用于解析JSON字符串(通常直接使用json.loads()更常见) |
json.JSONEncoder() | 创建一个JSON编码器对象,用于将Python对象转换成JSON字符串(通常直接使用json.dumps()更常见) |
json.JSONDecodeError | 异常类,用于处理JSON解码时发生的错误 |
json.loads() 是Python标准库 json 模块中的一个函数,用于将JSON格式的字符串解析(解码)成Python对象。这个过程是反序列化的一部分,即将数据从一种格式(在这个情况下是JSON字符串)转换成另一种格式(在这个情况下是Python的数据结构,如字典或列表)。
Python对象:通常是字典(对应于JSON对象)或列表(对应于JSON数组)。如果JSON字符串表示的是其他类型(如字符串、数字、布尔值、null),则返回相应的Python类型。
import json
# 一个简单的JSON字符串
json_str = '{"name": "Alice", "age": 30, "is_student": false}'
# 使用json.loads()将JSON字符串解析成Python对象
python_obj = json.loads(json_str)
# 打印解析后的Python对象
print(python_obj) # 输出: {'name': 'Alice', 'age': 30, 'is_student': False}
# 访问解析后的对象属性
print(python_obj['name']) # 输出: Alice
print(python_obj['age']) # 输出: 30
print(python_obj['is_student']) # 输出: Falsejson.dumps() 是Python标准库 json 模块中的一个函数,用于将Python对象编码(序列化)成JSON格式的字符串。这个过程是序列化的一部分,即将数据从一种格式(在这个情况下是Python的数据结构,如字典或列表)转换成另一种格式(在这个情况下是JSON字符串)。
str: 编码后的JSON格式的字符串。
import json
# 一个简单的Python对象(字典)
python_obj = {'name': 'Alice', 'age': 30, 'is_student': False}
# 使用json.dumps()将Python对象编码成JSON字符串
json_str = json.dumps(python_obj)
# 打印编码后的JSON字符串
print(json_str) # 输出: '{"name": "Alice", "age": 30, "is_student": false}'
# 使用indent参数来美化输出
pretty_json_str = json.dumps(python_obj, indent=4)
print(pretty_json_str)
# 输出:
# {
# "name": "Alice",
# "age": 30,
# "is_student": false
# }json.load() 是Python标准库 json 模块中的一个函数,用于从文件中读取JSON格式的数据,并将其解析(解码)成Python对象。这个过程是反序列化的一部分,即将数据从一种格式(在这个情况下是JSON文件)转换成另一种格式(在这个情况下是Python的数据结构,如字典或列表)。
Python对象:通常是字典(对应于JSON对象)或列表(对应于JSON数组)。如果JSON文件表示的是其他类型(如字符串、数字、布尔值、null),则返回相应的Python类型。
import json
# 假设有一个名为'data.json'的文件,内容如下:
# {
# "name": "Alice",
# "age": 30,
# "is_student": false
# }
# 打开JSON文件并读取数据
with open('data.json', 'r', encoding='utf-8') as f:
python_obj = json.load(f)
# 打印解析后的Python对象
print(python_obj) # 输出: {'name': 'Alice', 'age': 30, 'is_student': False}
# 访问解析后的对象属性
print(python_obj['name']) # 输出: Alicejson.dump() 是Python标准库 json 模块中的一个函数,用于将Python对象编码(序列化)成JSON格式,并将结果写入到一个文件中。这个过程是序列化的一部分,即将数据从一种格式(在这个情况下是Python的数据结构,如字典或列表)转换成另一种格式(在这个情况下是JSON文件)。
None:json.dump() 不返回任何值,它将编码后的JSON数据直接写入到提供的文件对象中。
import json
# 一个简单的Python对象(字典)
python_obj = {'name': 'Alice', 'age': 30, 'is_student': False}
# 打开一个文件以写入JSON数据
with open('output.json', 'w', encoding='utf-8') as f:
json.dump(python_obj, f)
# 现在'output.json'文件包含了编码后的JSON数据