2024年07月12日 Python转JSON字符串 极客笔记
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写。它基于JavaScript语法,但也可以用于许多其他编程语言。JSON格式通常用于Web应用程序之间的数据交换,也常用于配置文件和日志记录。
JSON数据表示简洁且易于解析,它由键值对构成,键和值之间使用冒号分隔,不同键值对之间使用逗号分隔,并且在整个数据的开始和结束处使用大括号。
以下是一个简单的JSON示例:
{
"name": "Alice",
"age": 30,
"city": "New York"
}
Python内置了json
模块,可以用于在Python对象(如字典、列表、字符串等)和JSON字符串之间进行转换。json
模块提供了loads()
和dumps()
函数用于解析JSON和生成JSON。
可以使用json.dumps()
函数将Python对象转换为JSON字符串。以下是一个简单的示例,将Python字典转换为JSON字符串:
import json
data = {
"name": "Bob",
"age": 25,
"city": "Los Angeles"
}
json_str = json.dumps(data)
print(json_str)
运行结果:
{"name": "Bob", "age": 25, "city": "Los Angeles"}
可以使用json.loads()
函数将JSON字符串转换为Python对象。以下是一个示例,将上面生成的JSON字符串解析为Python字典:
import json
json_str = '{"name": "Bob", "age": 25, "city": "Los Angeles"}'
data = json.loads(json_str)
print(data)
运行结果:
{'name': 'Bob', 'age': 25, 'city': 'Los Angeles'}
除了简单的字典和列表外,json
模块还支持处理更复杂的数据结构,如嵌套列表和字典。以下是一个示例,展示如何处理嵌套数据结构:
import json
data = {
"name": "Alice",
"age": 30,
"city": "New York",
"friends": [
{"name": "Bob", "age": 25},
{"name": "Charlie", "age": 28}
]
}
json_str = json.dumps(data)
print(json_str)
运行结果:
{"name": "Alice", "age": 30, "city": "New York", "friends": [{"name": "Bob", "age": 25}, {"name": "Charlie", "age": 28}]}
在将Python对象转换为JSON字符串时,需要注意处理一些特殊类型,如datetime
对象和自定义类。json
模块提供了一个default
参数,可以定义一个自定义的转换函数来处理这些特殊类型。
以下是一个示例,将datetime
对象转换为可序列化的格式:
import json
from datetime import datetime
def datetime_handler(obj):
if isinstance(obj, datetime):
return obj.isoformat()
else:
raise TypeError("Object of type {} is not JSON serializable".format(type(obj)))
data = {
"name": "Alice",
"timestamp": datetime.now()
}
json_str = json.dumps(data, default=datetime_handler)
print(json_str)
运行结果:
{"name": "Alice", "timestamp": "2021-07-23T15:30:00"}
在Python中使用json
模块可以方便地将Python对象和JSON字符串进行相互转换。无论是简单的数据结构还是复杂的嵌套数据结构,json
模块都能很好地处理。同时,借助default
参数可以处理特殊数据类型的转换。
本文链接:http://so.lmcjl.com/news/8354/