Python中JSON的使用方法(超详细)
什么是JSON?
JSON,全称JavaScript Object Notation,是一种轻量级的数据交换格式。它以易于人类阅读的文本格式存储数据,广泛应用于前后端数据通信、配置文件、日志记录等场景。相比XML等传统数据格式,JSON更简洁、易于解析和生成。
JSON数据结构
JSON数据由若干键值对组成,每个键值对由冒号“:”分隔,不同键值对之间用逗号“,”分隔。JSON支持的数据类型有:
- 对象(object):以花括号“{}”包围的键值对集合。
- 数组(array):以方括号“[]”包围的元素集合。
- 字符串(string):由双引号“””包围的Unicode字符序列。
- 数值(number):整数、浮点数或科学计数法表示的数值。
- 布尔(boolean):值为true或false。
- 空值(null):值为null。
下面是一个JSON数据结构的例子:
{
"name": "Jack",
"age": 25,
"address": {
"city": "Beijing",
"street": "Chang'an Avenue"
},
"skills": ["Python", "Java", "JavaScript"]
}
Python中的JSON解析库
Python内置了json模块,用于处理JSON数据的解析和生成。json模块提供了两个主要的函数:
- json.loads(json_str):将JSON字符串解析为Python对象。
- json.dumps(py_obj):将Python对象序列化为JSON字符串。
JSON字符串解析为Python对象
下面通过一个例子来演示如何将JSON字符串解析为Python对象。
import json
json_str = '{"name": "Jack", "age": 25, "skills": ["Python", "Java", "JavaScript"]}'
py_obj = json.loads(json_str)
print(py_obj)
输出结果为:
{'name': 'Jack', 'age': 25, 'skills': ['Python', 'Java', 'JavaScript']}
注意,json.loads()函数返回的是Python的基本数据类型,如字典、列表、字符串等,而不是特定的JSON解析对象。
Python对象序列化为JSON字符串
下面通过一个例子来演示如何将Python对象序列化为JSON字符串。
import json
py_obj = {
'name': 'Jack',
'age': 25,
'skills': ['Python', 'Java', 'JavaScript']
}
json_str = json.dumps(py_obj)
print(json_str)
输出结果为:
{"name": "Jack", "age": 25, "skills": ["Python", "Java", "JavaScript"]}
示例:从文件读取JSON数据
下面通过一个例子来演示如何从文件读取JSON数据。假设有一个JSON文件data.json,内容如下:
{
"name": "Jack",
"age": 25,
"skills": ["Python", "Java", "JavaScript"]
}
可以按照下面的方式读取和解析这个文件:
import json
with open('data.json', 'r') as f: # 以读模式打开文件
json_str = f.read() # 读取文件内容为字符串
py_obj = json.loads(json_str) # 解析JSON字符串为Python对象
print(py_obj) # 打印Python对象
输出结果与前面的例子相同。
示例:将Python对象存储为JSON文件
下面通过一个例子来演示如何将Python对象存储为JSON文件。假设有一个Python对象py_obj,内容如下:
{
'name': 'Jack',
'age': 25,
'skills': ['Python', 'Java', 'JavaScript']
}
可以按照下面的方式将它存储为JSON文件:
import json
with open('data.json', 'w') as f: # 以写模式打开文件
json_str = json.dumps(py_obj) # 将Python对象序列化为JSON字符串
f.write(json_str) # 将JSON字符串写入文件
这样就可以创建一个文件data.json,内容为Python对象转化后的JSON字符串。
以上就是Python中JSON的使用方法的完整攻略,相信你已经可以熟练地使用json模块来解析和生成JSON数据了。