JSON(JavaScript Object Notation)
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于文本,独立于语言,但使用起来非常自然,尤其是对于像JavaScript、Python等语言。
JSON 的基本结构
JSON 数据由键值对组成,通常包含以下几种数据类型:
-
对象(Object):由键值对组成,用大括号
{}
包裹。键(Key)必须是字符串类型,值(Value)可以是任何类型(字符串、数字、数组、布尔值、对象等)。 -
数组(Array):由一系列值组成,用方括号
[]
包裹。 -
字符串(String):用双引号
"
包裹的文本。 -
数字(Number):整数或浮点数。
-
布尔值(Boolean):
true
或false
。 -
空值(Null):
null
。
示例
以下是一个 JSON 示例,展示了一个包含多种数据类型的对象:
JSON复制
{
"name": "Alice",
"age": 25,
"is_student": false,
"courses": ["Math", "Science", "History"],
"address": {
"street": "123 Main St",
"city": "Anytown",
"zip": "12345"
},
"phone": null
}
JSON 的用途
-
数据交换:JSON 是一种广泛使用的数据交换格式,特别适合在 Web 应用程序中传输数据。
-
配置文件:JSON 文件常用于存储配置信息,因为它易于阅读和编写。
-
API 响应:许多 Web API 使用 JSON 格式返回数据,便于客户端解析和使用。
Python 中的 JSON 操作
Python 提供了 json
模块,用于处理 JSON 数据。以下是常见的操作:
1. 将 Python 对象转换为 JSON 字符串
Python复制
import json
data = {
"name": "Alice",
"age": 25,
"is_student": False,
"courses": ["Math", "Science", "History"],
"address": {
"street": "123 Main St",
"city": "Anytown",
"zip": "12345"
},
"phone": None
}
json_string = json.dumps(data, indent=4)
print(json_string)
输出:
JSON复制
{
"name": "Alice",
"age": 25,
"is_student": false,
"courses": [
"Math",
"Science",
"History"
],
"address": {
"street": "123 Main St",
"city": "Anytown",
"zip": "12345"
},
"phone": null
}
2. 将 JSON 字符串解析为 Python 对象
Python复制
import json
json_string = '''
{
"name": "Alice",
"age": 25,
"is_student": false,
"courses": ["Math", "Science", "History"],
"address": {
"street": "123 Main St",
"city": "Anytown",
"zip": "12345"
},
"phone": null
}
'''
data = json.loads(json_string)
print(data)
输出:
Python复制
{
'name': 'Alice',
'age': 25,
'is_student': False,
'courses': ['Math', 'Science', 'History'],
'address': {
'street': '123 Main St',
'city': 'Anytown',
'zip': '12345'
},
'phone': None
}
3. 读写 JSON 文件
-
写入 JSON 文件:
Python复制
import json
data = {
"name": "Alice",
"age": 25,
"is_student": False,
"courses": ["Math", "Science", "History"],
"address": {
"street": "123 Main St",
"city": "Anytown",
"zip": "12345"
},
"phone": None
}
with open("data.json", "w") as file:
json.dump(data, file, indent=4)
-
读取 JSON 文件:
Python复制
import json
with open("data.json", "r") as file:
data = json.load(file)
print(data)
注意事项
-
JSON 和 Python 的类型对应关系:
-
JSON 的
null
对应 Python 的None
。 -
JSON 的
true
和false
对应 Python 的True
和False
。 -
JSON 的数组对应 Python 的列表。
-
JSON 的对象对应 Python 的字典。
-
-
JSON 编码和解码:
-
使用
json.dumps()
将 Python 对象转换为 JSON 字符串。 -
使用
json.loads()
将 JSON 字符串解析为 Python 对象。 -
使用
json.dump()
和json.load()
读写 JSON 文件。
-
-
格式化 JSON 输出:
-
使用
indent
参数格式化 JSON 输出,使内容更易于阅读。
-
JSON 是一种非常灵活和广泛使用的数据格式,掌握 JSON 的基本操作对于开发 Web 应用程序和处理数据交换非常重要。