json入门
JSON 简介
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript语言的一个子集,但由于其简单易懂和易于解析的特性,已广泛应用于各种编程语言中。JSON格式以纯文本表示,易于人们阅读和编写,同时也易于机器解析和生成。
JSON 格式的基本结构
JSON主要有两种结构:对象(object)和数组(array)。
1. 对象
对象是键值对的无序集合,键是字符串,值可以是任意有效的JSON数据类型。对象用花括号 {}
包围,键和值之间用冒号 :
分隔,键值对之间用逗号 ,
分隔。
示例:
{
"name": "Alice",
"age": 25,
"city": "New York"
}
2. 数组
数组是值的有序集合,值之间用逗号 ,
分隔。数组用方括号 []
包围,数组中的每个值可以是任意有效的JSON数据类型。
示例:
[
"Python",
"JavaScript",
"C++"
]
JSON数据类型
JSON支持以下几种数据类型:
- 字符串(String):使用双引号
"
包围的文本。"Hello, world!"
- 数值(Number):可以是整数或浮点数。
42 3.14
- 布尔值(Boolean):表示真或假。
true false
- 对象(Object):键值对的无序集合。
{ "name": "Bob", "age": 30 }
- 数组(Array):值的有序集合。
["red", "green", "blue"]
- 空值(Null):表示一个空值。
null
示例
下面是一个包含多种数据类型和嵌套结构的JSON示例:
{
"name": "John Doe",
"age": 29,
"isStudent": false,
"courses": [
{
"name": "Mathematics",
"grade": "A"
},
{
"name": "Physics",
"grade": "B+"
}
],
"address": {
"street": "123 Main St",
"city": "New York",
"zip": "10001"
},
"hobbies": ["reading", "travelling", "swimming"],
"graduationYear": null
}
在这个示例中,包含了字符串、数值、布尔值、对象、数组和空值等数据类型,并展示了对象和数组的嵌套使用。
解析JSON文件
解析JSON文件在Python中是一个常见的任务,通常使用内置的json
模块来完成。
步骤
- 导入JSON模块:首先,需要导入Python内置的
json
模块。 - 读取JSON文件:使用文件操作函数打开文件并读取其内容。
- 解析JSON数据:使用
json.load()
函数将JSON数据转换为Python字典或列表。 - 处理数据:对解析后的数据进行操作。
示例代码
1. 导入JSON模块
import json
2. 读取和解析JSON文件
假设有一个JSON文件data.json
,内容如下:
{
"name": "John",
"age": 30,
"city": "New York",
"skills": ["Python", "Machine Learning", "Web Development"]
}
以下是读取和解析该文件的代码:
# 打开JSON文件并读取内容
with open('data.json', 'r') as file:
data = json.load(file)
# 打印解析后的数据
print(data)
3. 处理数据
可以像处理普通字典一样操作解析后的数据:
# 获取名字
name = data['name']
print(f"Name: {name}")
# 获取年龄
age = data['age']
print(f"Age: {age}")
# 获取城市
city = data['city']
print(f"City: {city}")
# 获取技能
skills = data['skills']
print(f"Skills: {', '.join(skills)}")
处理嵌套的JSON数据
如果JSON数据中包含嵌套的结构,可以使用递归或迭代的方法进行处理:
# 假设有一个嵌套的JSON文件 data_nested.json
{
"person": {
"name": "John",
"age": 30,
"address": {
"city": "New York",
"zipcode": "10001"
}
},
"skills": ["Python", "Machine Learning", "Web Development"]
}
# 读取并解析嵌套的JSON数据
with open('data_nested.json', 'r') as file:
nested_data = json.load(file)
# 访问嵌套的内容
name = nested_data['person']['name']
city = nested_data['person']['address']['city']
print(f"Name: {name}")
print(f"City: {city}")
写入JSON文件
解析和处理完数据后,可以将其写回JSON文件:
# 假设有一个字典
data_to_save = {
"name": "Jane",
"age": 25,
"city": "Los Angeles",
"skills": ["Data Science", "Deep Learning"]
}
# 将字典写入JSON文件
with open('output.json', 'w') as file:
json.dump(data_to_save, file, indent=4)
License:
CC BY 4.0