本文目录导读:

我来为你提供几个Python字典转JSON的案例和数据生成方法。
基础案例:字典转JSON
import json
# 简单的字典
data = {
"name": "张三",
"age": 25,
"city": "北京",
"hobbies": ["编程", "读书", "游泳"],
"is_student": False
}
# 转换为JSON字符串
json_str = json.dumps(data, ensure_ascii=False)
print(json_str)
# 输出: {"name": "张三", "age": 25, "city": "北京", "hobbies": ["编程", "读书", "游泳"], "is_student": false}
生成随机数据案例
import json
import random
import string
from datetime import datetime, timedelta
def generate_user_data(num_users=5):
"""生成用户数据"""
users = []
first_names = ["张三", "李四", "王五", "赵六", "刘七"]
last_names = ["伟", "芳", "娜", "敏", "强"]
cities = ["北京", "上海", "广州", "深圳", "杭州"]
for i in range(num_users):
user = {
"id": i + 1,
"name": random.choice(first_names) + random.choice(last_names),
"age": random.randint(18, 60),
"city": random.choice(cities),
"salary": round(random.uniform(5000, 30000), 2),
"is_active": random.choice([True, False]),
"hobbies": random.sample(["读书", "运动", "音乐", "旅游", "摄影"],
random.randint(1, 3))
}
users.append(user)
return users
# 生成数据并转换为JSON
users = generate_user_data(3)
json_str = json.dumps(users, ensure_ascii=False, indent=2)
print(json_str)
嵌套数据结构生成
import json
from datetime import datetime
def generate_order_data():
"""生成订单数据"""
products = [
{"id": "P001", "name": "笔记本电脑", "price": 5999},
{"id": "P002", "name": "手机", "price": 3999},
{"id": "P003", "name": "耳机", "price": 299},
]
orders = []
for i in range(3):
order = {
"order_id": f"ORD{datetime.now().strftime('%Y%m%d')}{i+1:03d}",
"customer": {
"name": f"客户{i+1}",
"email": f"customer{i+1}@example.com",
"address": {
"province": "广东省",
"city": "深圳市",
"detail": f"科技园区{i+1}号楼"
}
},
"items": [
{
"product": product,
"quantity": i + 1,
"subtotal": product["price"] * (i + 1)
}
for product in products
],
"total_amount": sum(p["price"] * (i + 1) for p in products),
"create_time": datetime.now().isoformat()
}
orders.append(order)
return orders
# 生成数据
orders = generate_order_data()
json_str = json.dumps(orders, ensure_ascii=False, indent=2)
print(json_str[:500] + "...") # 只打印前500个字符
批量数据生成(用于测试)
import json
import random
def generate_large_dataset(size=100):
"""生成大型数据集用于测试"""
data = []
for i in range(size):
record = {
"id": i,
"value": random.randint(1, 1000),
"category": random.choice(["A", "B", "C", "D"]),
"timestamp": f"2024-01-{random.randint(1, 31):02d}T{random.randint(0, 23):02d}:{random.randint(0, 59):02d}:00",
"metrics": {
"temperature": round(random.uniform(20, 40), 1),
"humidity": round(random.uniform(30, 80), 1),
"pressure": round(random.uniform(900, 1100), 1)
},
"tags": random.sample(["sensor1", "sensor2", "sensor3", "sensor4"],
random.randint(1, 3))
}
data.append(record)
return data
# 生成100条测试数据
test_data = generate_large_dataset(100)
json_str = json.dumps(test_data, indent=2)
# 保存到文件
with open('test_data.json', 'w', encoding='utf-8') as f:
f.write(json_str)
print(f"生成了 {len(test_data)} 条数据,已保存到 test_data.json")
从CSV/Excel生成JSON数据
import json
import csv
import io
def csv_to_json(csv_string):
"""从CSV字符串生成JSON"""
# 模拟CSV数据
csv_data = """name,age,city,score
张三,25,北京,95.5
李四,30,上海,88.0
王五,28,广州,92.3"""
reader = csv.DictReader(io.StringIO(csv_data))
data = []
for row in reader:
# 转换数据类型
row["age"] = int(row["age"])
row["score"] = float(row["score"])
data.append(row)
return json.dumps(data, ensure_ascii=False, indent=2)
# 使用示例
json_result = csv_to_json(None)
print(json_result)
实用工具函数
import json
from typing import Any, List, Dict
class DataGenerator:
"""数据生成器类"""
@staticmethod
def to_json(data: Any, pretty: bool = True) -> str:
"""转换数据为JSON字符串"""
return json.dumps(
data,
ensure_ascii=False,
indent=2 if pretty else None,
default=str # 处理不可序列化的对象
)
@staticmethod
def save_to_file(data: Any, filename: str):
"""保存数据到JSON文件"""
with open(filename, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
print(f"数据已保存到 {filename}")
@staticmethod
def load_from_file(filename: str) -> Dict:
"""从JSON文件加载数据"""
with open(filename, 'r', encoding='utf-8') as f:
return json.load(f)
# 使用示例
generator = DataGenerator()
# 生成数据
data = [
{"id": 1, "name": "产品A", "price": 99.9},
{"id": 2, "name": "产品B", "price": 199.9}
]
# 转换为JSON
print(generator.to_json(data))
# 保存到文件
generator.save_to_file(data, "products.json")
# 从文件读取
loaded_data = generator.load_from_file("products.json")
print(loaded_data)
使用建议
- 设置
ensure_ascii=False:确保中文正常显示 - 使用
indent参数:格式化输出使JSON可读 - 处理特殊类型:使用
default=str处理datetime等不可序列化对象 - 数据验证:生成数据后验证JSON格式是否正确
这些案例覆盖了从简单到复杂的JSON数据生成场景,你可以根据实际需求选择合适的方案。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播