📅  最后修改于: 2023-12-03 14:51:20.853000             🧑  作者: Mango
JSON(Javascript Object Notation)是一种轻量级的数据格式,常用于数据交换,特别适合于Web环境下的数据传递。Python内置了一个JSON模块,可以用于序列化和反序列化JSON格式的数据。
序列化是指将数据结构或对象转换为一组字节的过程,以便它们可以被存储在文件或内存中,或通过网络发送到远程系统。反序列化是将这些字节重新转换回数据结构或对象的过程。
在Python中,可以将Python数据类型(如字典,列表等)序列化为JSON格式,也可以将JSON格式的数据反序列化为Python数据类型。
Python内置的JSON模块提供了 json.dumps()
和 json.dump()
两种用于序列化JSON数据的方法。
json.dumps()
方法将Python对象序列化为JSON字符串:
import json
data = {"name": "Jack", "age": 26, "hobbies": ["reading", "running"]}
json_str = json.dumps(data)
print(json_str)
输出:
{"name": "Jack", "age": 26, "hobbies": ["reading", "running"]}
json.dump()
方法将Python对象序列化为JSON对象,并将其写入文件中:
import json
data = {"name": "Jack", "age": 26, "hobbies": ["reading", "running"]}
with open("data.json", "w") as f:
json.dump(data, f)
Python内置的JSON模块提供了 json.loads()
和 json.load()
两种用于反序列化JSON数据的方法。
json.loads()
方法将JSON字符串反序列化为Python对象:
import json
json_str = '{"name": "Jack", "age": 26, "hobbies": ["reading", "running"]}'
data = json.loads(json_str)
print(data)
输出:
{'name': 'Jack', 'age': 26, 'hobbies': ['reading', 'running']}
json.load()
方法从文件中读取JSON对象,并将其反序列化为Python对象:
import json
with open("data.json", "r") as f:
data = json.load(f)
print(data)
对于包含嵌套的数据结构(如列表中嵌套字典,字典中嵌套列表等)的JSON数据,同样可以使用 json.dumps()
和 json.loads()
方法进行序列化和反序列化。
import json
data = {
"username": "Alice",
"age": 30,
"hobbies": ["reading", "running"],
"address": {
"street": "123 Main St.",
"city": "New York",
"state": "NY"
},
"friends": [
{
"name": "Bob",
"age": 28,
"hobbies": ["swimming", "cycling"],
"address": {
"street": "456 Elm St.",
"city": "Los Angeles",
"state": "CA"
}
},
{
"name": "Charlie",
"age": 25,
"hobbies": ["hiking", "camping"],
"address": {
"street": "789 Oak St.",
"city": "San Francisco",
"state": "CA"
}
}
]
}
# 序列化为JSON字符串
json_str = json.dumps(data)
print(json_str)
# 反序列化JSON字符串为Python对象
data_again = json.loads(json_str)
print(data_again)
输出:
{"username": "Alice", "age": 30, "hobbies": ["reading", "running"],
"address": {"street": "123 Main St.", "city": "New York", "state": "NY"},
"friends": [{"name": "Bob", "age": 28, "hobbies": ["swimming", "cycling"],
"address": {"street": "456 Elm St.", "city": "Los Angeles", "state": "CA"}},
{"name": "Charlie", "age": 25, "hobbies": ["hiking", "camping"],
"address": {"street": "789 Oak St.", "city": "San Francisco", "state": "CA"}}]}
Python的JSON模块提供了方便的方法序列化和反序列化JSON数据。对于复杂的JSON数据,可以使用 json.dumps()
和 json.loads()
方法进行序列化和反序列化,从而简化代码的编写和维护。