您的位置:首页 > 健康 > 美食 > 人民日报体育_法律咨询_长沙专业竞价优化公司_吉林刷关键词排名优化软件

人民日报体育_法律咨询_长沙专业竞价优化公司_吉林刷关键词排名优化软件

2025/3/31 16:41:29 来源:https://blog.csdn.net/weixin_63779518/article/details/146553169  浏览:    关键词:人民日报体育_法律咨询_长沙专业竞价优化公司_吉林刷关键词排名优化软件
人民日报体育_法律咨询_长沙专业竞价优化公司_吉林刷关键词排名优化软件

一、JSON 基础操作

一、基础核心操作

1. 字典转JSON字符串

使用内置json.dumps()方法实现类型转换,支持多种参数优化:

import json
data = {"name": "Yant", "age": 25, "skills": ["Python", "数据分析"]}# 基础转换
json_str = json.dumps(data)
# 优化显示(含中文支持+格式化)
formatted_str = json.dumps(data, ensure_ascii=False, indent=4)
print(formatted_str)

参数说明

  • ensure_ascii=False 禁用ASCII编码保留中文原貌
  • indent=4 生成带缩进的美观格式

结果输出

{"name": "Yant","age": 25,"skills": ["Python","数据分析"]
}

2. 字典转JSON文件

通过json.dump()实现持久化存储:

with open('user.json', 'w', encoding='utf-8') as f:json.dump(data, f, ensure_ascii=False, indent=4)print(f.name)

文件操作建议指定utf-8编码以避免乱码

3. JSON文件转字典

使用json.load()反向解析文件内容:

with open('user.json', 'r', encoding='utf-8') as f:loaded_data = json.load(f)
print(loaded_data['name'])  # 输出:Yant

4. JSON字符串转字典

通过json.loads()实现内存数据转换:

json_str = '{"city": "北京", "population": 2154}'
parsed_dict = json.loads(json_str)
print(type(parsed_dict))  # <class 'dict'>

二、进阶处理技巧

1. 复杂对象序列化

处理自定义类实例时扩展序列化方法:

import json
from datetime import datetimeclass User:def __init__(self, name, join_date):self.name = nameself.join_date = join_date  # datetime对象def custom_encoder(obj):if isinstance(obj, User):return {"name": obj.name, "date": obj.join_date.isoformat()}raise TypeErroruser = User("Yant", datetime.now())
json_str = json.dumps(user, default=custom_encoder)
print(json_str)

2. 异常处理机制

try:json.loads('{"invalid": data}')
except json.JSONDecodeError as e:print(f"错误位置:{e.pos},错误信息:{e.msg}")## 异常输出
错误位置:12,错误信息:Expecting value

三、第三方库横向评测

库名称安装命令速度特点适用场景
​orjsonpip install orjson⚡️最快支持datetime类型,输出为字节流大数据量/高频处理
​ujsonpip install ujson🚀快兼容性好,接口与标准库一致常规场景替代方案
​rapidjsonpip install python-rapidjson🏃♂️较快支持SAX/DOM解析模式流式数据处理
​simplejsonpip install simplejson🐢一般支持旧版Python,功能最接近标准库兼容性要求高环境

性能实测数据​(处理10MB JSON):

  • orjson:序列化0.2s / 反序列化0.3s
  • ujson:序列化0.5s / 反序列化0.6s
  • json:序列化2.1s / 反序列化1.8s

四、选型决策树

  1. ​基础需求 ➔ 内置json模块
  2. 高频大数据处理orjson(需处理字节转换)
  3. ​平衡需求ujson(兼容性好)或rapidjson(流式处理)
  4. ​历史项目维护simplejson(支持Python 2.x)

五、避坑指南

  1. ​键名引号规范:JSON强制使用双引号,单引号会引发解析错误
  2. 浮点精度问题:建议使用decimal.Decimal处理财务数据
  3. 循环引用检测:自定义序列化时注意对象引用关系
  4. ​时区处理:建议统一转换为UTC时间存储

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com