首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >python 解析json常见的几种库

python 解析json常见的几种库

作者头像
用户12558604
发布2026-06-17 17:52:07
发布2026-06-17 17:52:07
50
举报

JSON是一种轻量级数据交换格式,Python 中常用多种库来解析和处理 JSON 数据

标准库 json

Python 内置的 json 库是处理 JSON 最基础、最常用的工具

核心功能

  • json.dumps():将 Python 对象转换为 JSON 字符串
  • json.loads():将 JSON 字符串转换为 Python 对象
  • json.dump():将 Python 对象写入 JSON 文件
  • json.load():从 JSON 文件读取数据并转换为 Python 对象

示例代码

代码语言:javascript
复制
import json

# 1. Python 字典转 JSON
data = {"name": "拾光", "age": 18, "hobbies": ["reading", "coding"]}
json_str = json.dumps(data, indent=2, ensure_ascii=False)  # indent 格式化输出,ensure_ascii 保留中文
print(json_str)

# 2. JSON 字符串转 Python 字典
json_str = '{"name": "小明", "age": 30, "is_student": false}'
python_data = json.loads(json_str)
print(python_data["name"])

# 3. 写入
withopen("data.json", "w", encoding="utf-8") as f:
    json.dump(data, f, indent=2, ensure_ascii=False)

# 4. 读取
withopen("data.json", "r", encoding="utf-8") as f:
    file_data = json.load(f)
print(file_data["hobbies"])  # 输出:['reading', 'coding']

demjson

demjson 是一个第三方库,以宽容的方式解析 JSON,支持非标准格式,比如缺少引号、包含注释

代码语言:javascript
复制
pip install demjson

功能

  • demjson.encode():类似 json.dumps()
  • demjson.decode():类似 json.loads(),容错性更强

示例

代码语言:javascript
复制
import demjson

# 解析非标准 JSON(缺少引号、包含注释)
non_standard_json = """{
    name: "拾光",  # 这里键名缺少引号
    age: 18
}"""

# 用 demjson 解析(不会报错)
data = demjson.decode(non_standard_json)
print(data["name"])

# 转换为 JSON 字符串
json_str = demjson.encode(data, indent=2)
print(json_str)

simplejson

simplejsonjson 标准库的增强版,支持更多数据类型和优化性能。

代码语言:javascript
复制
pip install simplejson

功能

json 库 API 几乎一致,额外支持更多数据类型转换(如 datetimedecimal

代码语言:javascript
复制
import simplejson as json
from datetime import datetime

# 1. 序列化 datetime(将 datetime 转换为 ISO 格式字符串)
data = {"time": datetime(2025, 8, 12, 12, 0)}

# 使用 default 参数指定 datetime 的转换逻辑
json_str = json.dumps(
    data,
    indent=2,
    default=lambda obj: obj.isoformat() ifisinstance(obj, datetime) else obj
)
print("序列化结果:")
print(json_str)

# 2. 反序列化(将 ISO 字符串还原为 datetime)
parsed_data = json.loads(
    json_str,
    object_hook=lambda d: {
        k: datetime.fromisoformat(v) if k == "time"andisinstance(v, str) else v
        for k, v in d.items()
    }
)
print("\n反序列化结果:")
print(parsed_data["time"])  # 输出 datetime 对象
print(type(parsed_data["time"]))  # 确认类型为 datetime

ujson

ujson是一个高性能 JSON 解析库,基于 C 扩展实现,速度极快。

代码语言:javascript
复制
pip install ujson

功能

API 与 json 库一致,主打高性能解析。

示例

代码语言:javascript
复制
import ujson

data = {"name": "小王", "scores": [90, 85, 95]}

json_str = ujson.dumps(data, indent=2)
print(json_str)

# 快速反序列化
parsed_data = ujson.loads(json_str)
print(parsed_data["scores"])  # 输出:[90, 85, 95]

库的选择建议

  1. 1. 日常开发:优先使用内置 json 库,无需额外依赖,满足大多数需求。
  2. 2. 非标准 JSON:使用 demjson 解析不规范的 JSON 数据(如带注释、缺少引号)。嘿嘿重点推荐这个
  3. 3. 高性能需求:处理大数据量时选择 ujson,提升解析速度。
  4. 4. 扩展类型支持:需要转换 datetime 等特殊类型时,用 simplejson

#Python

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程拾光 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 标准库 json
  • 核心功能
  • 示例代码
  • demjson 库
  • 功能
  • 示例
  • simplejson 库
    • 功能
    • ujson 库
    • 功能
    • 库的选择建议
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档