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

Python学习(5) ----- Python的JSON处理

下面是关于 Python 中如何全面处理 JSON 的详细说明,包括模块介绍、数据类型映射、常用函数、文件操作、异常处理、进阶技巧等。


🧩 一、什么是 JSON?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于 API 和配置文件。

示例:

{"name": "张三","age": 28,"is_student": false,"skills": ["Python", "Java"],"address": {"city": "北京","zipcode": "100000"}
}

🛠️ 二、Python json 模块简介

Python 提供内置模块 json,支持 JSON 和 Python 对象之间的 序列化(encode)反序列化(decode)

import json

🔄 三、JSON 与 Python 数据类型映射表

JSON 类型Python 类型
objectdict
arraylist
stringstr
numberint / float
true / falseTrue / False
nullNone

✍️ 四、常用函数详细说明

1. json.dumps() — Python 对象 → JSON 字符串

import jsondata = {"name": "李雷", "age": 20}
json_str = json.dumps(data, ensure_ascii=False, indent=2)
print(json_str)

参数说明

  • ensure_ascii=False:中文不转义,默认是 True(会变成 \uXXXX)
  • indent=2:格式化输出,2 表示缩进空格数
  • sort_keys=True:按键名排序输出

2. json.loads() — JSON 字符串 → Python 对象

json_str = '{"name": "韩梅梅", "age": 22}'
data = json.loads(json_str)
print(data["name"])  # 韩梅梅

3. json.dump() — Python 对象 → 写入 JSON 文件

data = {"name": "Tom", "age": 18}
with open("user.json", "w", encoding="utf-8") as f:json.dump(data, f, ensure_ascii=False, indent=2)

4. json.load() — 从 JSON 文件读取为 Python 对象

with open("user.json", "r", encoding="utf-8") as f:data = json.load(f)
print(data["name"])

🚫 五、异常处理

处理不合法 JSON 字符串时要加异常保护:

try:json_str = '{"name": "Error", "age": 30'  # 缺少结尾大括号data = json.loads(json_str)
except json.JSONDecodeError as e:print("JSON 解析失败:", e)

📦 六、复杂嵌套结构处理

json_str = '''
{"user": {"name": "张三","info": {"age": 30,"skills": ["Python", "Go"]}}
}
'''data = json.loads(json_str)
print(data["user"]["info"]["skills"][0])  # Python

🧠 七、技巧 & 补充

1. 将 Python 类对象转为 JSON(需要先转字典)

class User:def __init__(self, name, age):self.name = nameself.age = ageu = User("Lucy", 18)
json_str = json.dumps(u.__dict__, ensure_ascii=False)
print(json_str)

2. 处理含中文的 JSON 文件

务必加上 encoding='utf-8',否则可能乱码。


🧪 八、实际应用场景举例

示例:修改 JSON 文件中的某个字段

with open("config.json", "r", encoding="utf-8") as f:config = json.load(f)config["debug"] = Falsewith open("config.json", "w", encoding="utf-8") as f:json.dump(config, f, ensure_ascii=False, indent=2)

如果你有:

  • 一个具体的 JSON 文件想修改字段
  • 某种嵌套结构想提取信息
  • 想把 Python 数据存成 JSON 数据库
    都可以发给我,我可以写具体的例子帮你。

相关文章:

  • IDEA 在公司内网配置gitlab
  • 室内VR全景助力房产营销及装修
  • 敏捷开发在AI团队的适配研究
  • Android 开发 Kotlin 全局大喇叭与广播机制
  • STM32G4 电机外设篇(二) VOFA + ADC + OPAMP
  • 云原生DMZ架构实战:基于AWS CloudFormation的安全隔离区设计
  • Spring生命周期中织入代理逻辑
  • 数据在AI中扮演什么角色?为什么“数据是新的石油”?
  • 智慧景区一体化建设方案
  • Lyra学习笔记2 GFA_AddComponents与ULyraPlayerSpawningManagerComponent
  • 主流 AI IDE 之一的 Windsurf 使用入门
  • 修改Docker镜像源
  • 如何迁移SOS数据库和修改sos服务的端口号
  • Linux操作系统之进程(四):命令行参数与环境变量
  • mac mini m4命令行管理员密码设置
  • linux、docker、git相关操作
  • 【MySQL】事务及隔离性
  • MongoTemplate 中如何构建复杂的查询条件 (Criteria API)?
  • 智能问数技术路径对比:NL2SQL vs NL2Semantic2SQL
  • 在 Linux 上安装 `pgvector`(这是一个 PostgreSQL 的向量类型扩展,常用于处理嵌入向量,便于进行向量相似度搜索)
  • 泰安网站制作/网络营销案例视频
  • 有哪些做包装设计网站好些/合肥seo网站建设
  • 厦门小型网站建设/鞍山网络推广
  • 武汉建网站的公司/培训报名
  • 外汇网站怎么做优外汇网站/关键词优化价格
  • 临夏做网站/2023年九月份新闻