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

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 数据库
    都可以发给我,我可以写具体的例子帮你。
http://www.xdnf.cn/news/9959.html

相关文章:

  • 分布式存储技术全景解析:从架构演进到场景实践
  • 私有云大数据部署:从开发到生产(Docker、K8s、HDFS/Flink on K8s)
  • docker部署ELK,ES开启安全认证
  • 基于RK3568/RK3588/全志H3/飞腾芯片/音视频通话程序/语音对讲/视频对讲/实时性好/极低延迟
  • 深入链表剖析:从原理到 C 语言实现,涵盖单向、双向及循环链表全解析
  • vue3 项目配置多语言支持,如何从服务端拿多语言配置
  • 智能柜I立控信息I产品介绍
  • ArcGIS Pro 3.4 二次开发 - 布局
  • Spring Boot 应用中实现配置文件敏感信息加密解密方案
  • 通义灵码2.5——基于编程智能体开发Wiki多功能搜索引擎
  • 【软件】navicat 官方免费版
  • Flutter 嵌套H5 传参数
  • 生成式人工智能:重塑社会的双刃剑与人类文明的抉择
  • 技术创新如何赋能音视频直播行业?
  • IM系统的负载均衡
  • windows无法安装到这个磁盘,选中的磁盘采用gpt分区仪式
  • C++项目中使用CMake编译
  • WPF响应式UI的基础:INotifyPropertyChanged
  • OpenWebUI(1)源码学习构建
  • 公链地址生成曲线和算法
  • spring-boot redis lua脚本实现滑动窗口限流
  • 如何以 9 种方式将照片从 iPhone 传输到笔记本电脑
  • python打卡day40
  • STM32 搭配 嵌入式SD卡在智能皮电手环中的应用全景评测
  • 30V/150A MOSFET 150N03在无人机驱动动力系统中的性能边界与热设计挑战
  • 鸿蒙 HarmonyOS - SideBarContainer 组件自学指南
  • OleDbParameter.Value 与 DataTable.Rows.Item.Value 的性能对比
  • RCU初步分析
  • leetcode动态规划—打家劫舍系列
  • iOS 使用CocoaPods 添加Alamofire 提示错误的问题