本文目录导读:

我来介绍几种在Python中生成JSON数据的方法:
使用 json 模块
从Python字典生成JSON
import json
# 创建Python字典
data = {
"name": "张三",
"age": 25,
"city": "北京",
"hobbies": ["读书", "跑步", "编程"],
"is_student": False,
"scores": {
"数学": 95,
"英语": 88,
"语文": 92
}
}
# 转换为JSON字符串
json_string = json.dumps(data, ensure_ascii=False, indent=2)
print(json_string)
# 保存到文件
with open('data.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
从列表生成JSON
import json
users = [
{"name": "张三", "age": 25},
{"name": "李四", "age": 30},
{"name": "王五", "age": 35}
]
json_string = json.dumps(users, ensure_ascii=False, indent=2)
print(json_string)
使用 json 模块参数
import json
data = {"name": "张三", "age": 25}
# 常用参数
json_string = json.dumps(
data,
indent=4, # 缩进空格数
sort_keys=True, # 按键排序
ensure_ascii=False, # 支持中文
separators=(',', ':') # 分隔符设置
)
print(json_string)
从类对象生成JSON
import json
class User:
def __init__(self, name, age, email):
self.name = name
self.age = age
self.email = email
def to_dict(self):
return {
"name": self.name,
"age": self.age,
"email": self.email
}
# 创建对象
user = User("张三", 25, "zhangsan@example.com")
# 转换为JSON
json_string = json.dumps(user.to_dict(), ensure_ascii=False, indent=2)
print(json_string)
使用 dataclasses 模块
from dataclasses import dataclass, asdict
import json
@dataclass
class Person:
name: str
age: int
city: str
# 创建对象
person = Person("张三", 25, "北京")
# 转换为JSON
json_string = json.dumps(asdict(person), ensure_ascii=False, indent=2)
print(json_string)
使用第三方库 simplejson
import simplejson as json
data = {
"name": "张三",
"age": 25,
"scores": [95, 88, 92]
}
# 更强大的转换功能
json_string = json.dumps(data, ensure_ascii=False, indent=2)
print(json_string)
生成复杂嵌套JSON
import json
from datetime import datetime
# 自定义JSON编码器
class CustomEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.isoformat()
if isinstance(obj, set):
return list(obj)
return super().default(obj)
# 复杂数据
complex_data = {
"timestamp": datetime.now(),
"tags": {"python", "json", "data"},
"metadata": {
"version": "1.0",
"created_by": "自动化脚本"
},
"items": [
{"id": 1, "value": "A"},
{"id": 2, "value": "B"}
]
}
# 使用自定义编码器
json_string = json.dumps(complex_data, cls=CustomEncoder,
ensure_ascii=False, indent=2)
print(json_string)
实用函数示例
import json
def generate_json_file(filename, data, pretty=True):
"""生成JSON文件"""
try:
with open(filename, 'w', encoding='utf-8') as f:
if pretty:
json.dump(data, f, ensure_ascii=False, indent=2)
else:
json.dump(data, f, ensure_ascii=False)
print(f"JSON文件已生成: {filename}")
return True
except Exception as e:
print(f"生成失败: {e}")
return False
def json_to_pretty_string(data):
"""美化JSON字符串"""
return json.dumps(data, ensure_ascii=False, indent=2,
sort_keys=True)
# 使用示例
sample_data = {
"name": "张三",
"age": 25,
"active": True
}
# 生成文件和字符串
generate_json_file("output.json", sample_data)
pretty_json = json_to_pretty_string(sample_data)
print(pretty_json)
注意事项
- 中文处理: 使用
ensure_ascii=False保持中文字符 - 数据类型: JSON支持的数据类型有限(str, int, float, bool, list, dict, None)
- 特殊类型: datetime、set等需要自定义编码器
- 缩进: 使用
indent参数使输出更可读
选择哪种方法取决于你的具体需求,最常用的是标准库 json 模块。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播