当前位置: 首页 > backend >正文

JSON 处理笔记

🧠 JSON 处理笔记(Python)


一、什么是 JSON?

JSON(JavaScript Object Notation) 是一种轻量级的数据格式,广泛用于:

  • 网络数据通信(前后端接口)
  • 配置文件(如 .json 文件)
  • 数据存储(如数据库字段)

它和 Python 的 dict/list 数据结构非常相似。


二、Python 中处理 JSON 的标准库

Python 提供了内置模块:json,无需安装即可使用。

python复制编辑
import json

三、常用方法汇总(🔥重点)

功能方法示例
Python 对象 ➜ JSON 字符串json.dumps(obj)序列化为字符串
JSON 字符串 ➜ Python 对象json.loads(s)反序列化为 dict 或 list
Python 对象 ➜ 直接写入 JSON 文件json.dump(obj, file)推荐用于保存 JSON 文件
JSON 文件 ➜ 读取成 Python 对象json.load(file)读取本地 JSON 文件并转为对象

四、参数详解(常用)

json.dumps() / json.dump() 常用参数:

参数名作用示例
ensure_ascii=False保证中文不被转义成 \uXXXX正确保存中文
indent=2缩进美化,生成带换行的 JSON便于阅读
separators=(',', ': ')控制键值之间的空格精简或格式化

五、刚才的处理过程详解

🧩 原始问题

你有一个字符串形式的 JSON(比如从网页提取):

python复制编辑
json_str = '{\n  "中华人民共和国劳动法 第一条": "……", ... }'

✅ 步骤 1:反序列化字符串成 dict

python复制编辑
article_dict = json.loads(json_str)
  • json.loads() 把 JSON 格式的字符串转成 Python 的字典对象。
  • 此时你可以用 article_dict['中华人民共和国劳动法 第一条'] 正常取值。

✅ 步骤 2:为了生成 JSON 数组形式的结构,加一个列表封装

python复制编辑
article_list = [article_dict]

变成:

python复制编辑[{"中华人民共和国劳动法 第一条": "……"}
]

✅ 步骤 3:写入 JSON 文件(自动换行、支持中文)

python复制编辑with open(save_path, "w", encoding="utf-8") as f:json.dump(article_list, f, ensure_ascii=False, indent=2)
  • json.dump():直接将 Python 对象写入文件。
  • ensure_ascii=False:避免中文被转成 Unicode(\u4e2d\u56fd...
  • indent=2:加缩进,自动换行,美化结构

六、额外:文件读写常见操作

1. 读取 .json 文件

python复制编辑with open("data.json", "r", encoding="utf-8") as f:data = json.load(f)

2. 写入 .json 文件(推荐)

python复制编辑with open("output.json", "w", encoding="utf-8") as f:json.dump(data, f, ensure_ascii=False, indent=2)

七、常见错误提醒 ⚠️

错误原因解决
TypeError: Object of type X is not JSON serializable你试图写入的数据中包含不支持的类型,如 datetime、set 等转成字符串或基本类型
json.decoder.JSONDecodeError字符串不是合法 JSON 格式(可能用单引号或漏了逗号)检查 JSON 字符串结构

✅ 总结一句话:

在 Python 中,用 json.loads() 把 JSON 字符串变成对象,用 json.dumps()json.dump() 把对象变成 JSON 字符串或文件,配合 ensure_ascii=Falseindent=2 可以完美处理中文与格式化。

http://www.xdnf.cn/news/3699.html

相关文章:

  • npm pnpm yarn 设置国内镜像
  • 数据库原理与应用实验二 题目七
  • PowerShell安装Chocolatey
  • 哈希函数详解(SHA-2系列、SHA-3系列、SM3国密)案例:构建简单的区块链——密码学基础
  • Python刷题:流程控制(下)
  • PowerPC架构详解:定义、应用及特点
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】1.1 数据库核心概念与PostgreSQL技术优势
  • C++负载均衡远程调用学习之 Dns-Route关系构建
  • 代码随想录算法训练营Day43
  • 超预期!淘宝闪购提前开放全国全量,联合饿了么扭转外卖战局
  • 美丽天天秒链动2+1源码(新零售商城搭建)
  • P4314 CPU 监控 Solution
  • YOLO旋转目标检测之ONNX模型推理
  • 上位机知识篇---粗细颗粒度
  • P2415集合求和 题解
  • 【Java IO流】字符输入流FileReader、字符输出流FileWriter
  • C++ 动态内存管理详讲
  • 【Java IO流】字节输入流FileInputStream、字节输出流FileOutputStream
  • ICRA 2025 基于触觉反馈的闭环分层控制框架——开放环境下通用门开启的智能规划与操作
  • 【unity游戏开发入门到精通——UGUI】实现精准点击异形或者不规则图片button按钮
  • 字符串的相关方法
  • 【黑马JavaWeb+AI知识梳理】后端Web基础02 - Web基础
  • 街景主观感知全流程(自建数据集+两两对比程序+Trueskill计算评分代码+训练模型+大规模预测)20
  • Winform(8.常用控件1)
  • 电商平台的订单状态设计流程
  • QT中的QSS---界面美化
  • 时间给了我们什么?
  • 本地服务验证-仙盟创梦IDE-智能编程,编程自动备份+编程审计
  • C++开发指南
  • MyBatis 参数处理全解析