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

news2025/6/1 17:20:51

下面是关于 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 json

data = {"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 = name
        self.age = age

u = 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"] = False

with open("config.json", "w", encoding="utf-8") as f:
    json.dump(config, f, ensure_ascii=False, indent=2)

如果你有:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2392742.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何通过一次需求评审,让项目效率提升50%?

想象一下,你的团队启动了一个新项目,但需求模糊不清,开发到一半才发现方向错了,返工、加班、客户投诉接踵而至……听起来像噩梦?一次完美的需求评审就能避免这一切!它就像项目的“导航仪”,确保…

再见Notepad++,你好Notepad--

Notepad-- 是一款国产开源的轻量级、跨平台文本编辑器,支持 Window、Linux、macOS 以及国产 UOS、麒麟等操作系统。 除了具有常用编辑器的功能之外,Notepad-- 还内置了专业级的代码对比功能,支持文件、文件夹、二进制文件的比对,支…

element-plus bug整理

1.el-table嵌入el-image标签预览时&#xff0c;显示错乱 解决&#xff1a;添加preview-teleported属性 <el-table-column label"等级图标" align"center" prop"icon" min-width"80"><template #default"scope"&g…

技术-工程-管用养修保-智能硬件-智能软件五维黄金序位模型

融智学工程技术体系&#xff1a;五维协同架构 基于邹晓辉教授的框架&#xff0c;工程技术体系重构为&#xff1a;技术-工程-管用养修保-智能硬件-智能软件五维黄金序位模型&#xff1a; math \mathbb{E}_{\text{技}} \underbrace{\prod_{\text{Dis}} \text{TechnoCore}}_{\…

LangChain-自定义Tool和Agent结合DeepSeek应用实例

除了调用LangChain内置工具外&#xff0c;也可以自定义工具 实例1&#xff1a; 自定义多个工具 from langchain.agents import initialize_agent, AgentType from langchain_community.agent_toolkits.load_tools import load_tools from langchain_core.tools import tool, …

用 3D 可视化颠覆你的 JSON 数据体验

大家好&#xff0c;这里是架构资源栈&#xff01;点击上方关注&#xff0c;添加“星标”&#xff0c;一起学习大厂前沿架构&#xff01; 复杂的 JSON 数据结构常常让人头疼&#xff1a;层层嵌套的对象、错综复杂的数组关系&#xff0c;用传统的树状视图或表格一览千头万绪&…

MVCC(多版本并发控制)机制

1. MVCC&#xff08;多版本并发控制&#xff09;机制 MVCC 的核心就是 Undo Log Read View&#xff0c;“MV”就是通过 Undo Log 来保存数据的历史版本&#xff0c;实现多版本的管理&#xff0c;“CC”是通过 Read View 来实现管理&#xff0c;通过 Read View 原则来决定数据是…

Mac M1 安装 ffmpeg

1.前言 官网那货没有准备m系列的静态包&#xff0c;然后我呢&#xff0c;不知道怎么想的就从maven项目中的 javacv-platform&#xff0c;且版本为1.5.11依赖里面将这个静态包把了出来&#xff0c;亲测能用&#xff0c;感觉比那些网上说的用什么wget编译安装、brew安装快多了。…

Spring框架学习day3--Spring数据访问层管理(IOC)

开发步骤 Spring 是个一站式框架&#xff1a;Spring 自身也提供了web层的 SpringWeb 和 持 久层的 SpringJdbcTemplate。 开发步骤 1.导入jar包 pom.xml <!-- spring-jdbc--> <dependency><groupId>org.springframework</groupId><artifactId>…

重读《人件》Peopleware -(13)Ⅱ 办公环境 Ⅵ 电话

当你开始收集有关工作时间质量的数据时&#xff0c;你的注意力自然会集中在主要的干扰源之一——打进来的电话。一天内接15个电话并不罕见。虽然这看似平常&#xff0c;但由于重新沉浸所需的时间&#xff0c;它可能会耗尽你几乎一整天的时间。当一天结束时&#xff0c;你会纳闷…

Python训练营打卡Day40

DAY 40 训练和测试的规范写法 知识点回顾&#xff1a; 1.彩色和灰度图片测试和训练的规范写法&#xff1a;封装在函数中 2.展平操作&#xff1a;除第一个维度batchsize外全部展平 3.dropout操作&#xff1a;训练阶段随机丢弃神经元&#xff0c;测试阶段eval模式关闭dropout 作…

制作一款打飞机游戏63:自动保存

1.编辑器的自动保存实现 ‌目标‌&#xff1a;将自动保存功能扩展到所有编辑器&#xff0c;包括脑编辑器、模式编辑器、敌人编辑器和动画/精灵编辑器。‌实现方式‌&#xff1a; ‌代码复制‌&#xff1a;将关卡编辑器中的自动保存代码复制到其他编辑器中。‌标记数据变更‌&a…

golang连接sm3认证加密(app)

文章目录 环境文档用途详细信息 环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;4.5 文档用途 golang连接安全版sm3认证加密数据库,驱动程序详见附件。 详细信息 1.下载Linux golang安装包 go1.17.3.linux-amd64.tar.gz 1.1. 解压安…

【Zephyr 系列 2】用 Zephyr 玩转 Arduino UNO / MEGA,实现串口通信与 CLI 命令交互

🎯 本篇目标 在 Ubuntu 下将 Zephyr 运行在 Arduino UNO / MEGA 上 打通串口通信,实现通过串口发送命令与反馈 使用 Zephyr Shell 模块,实现 CLI 命令处理 🪧 为什么 Arduino + Zephyr? 虽然 Arduino 开发板通常用于简单的 C/C++ 开发,但 Zephyr 的支持范围远超 STM32…

Windows10下搭建sftp服务器(附:详细搭建过程、CMD连接测试、连接失败问题分析解决等)

最终连接sftp效果 搭建sftp服务器 1、这里附上作者已找好的 freeSSHd安装包 ,使用它进行搭建sftp服务器。 2、打开freeSSHd安装包,进行安装 (1)、选择完全安装 (2)、安装完成后,对提示窗口选择关闭 (3)、安装完成后,提示是否安装私有密钥。我们选择"是" (4)、安…

知识课堂|sCMOS相机可编程快门模式解析

sCMOS相机凭借高灵敏度、高动态、低读出噪声特性&#xff0c;成为生命科学成像领域的核心设备。在光片荧光显微镜LSFM成像应用中&#xff0c;传统卷帘快门的时序限制可能引发运动伪影或光片照明不均匀问题。可编程快门模式通过精确控制传感器曝光时序&#xff0c;实现与激光扫描…

在React框架中使用Braft Editor集成Table表格的详细教程

简介&#xff1a;Braft Editor是一款基于draft-js开发的React富文本编辑器&#xff0c;支持多媒体、自定义样式和扩展功能。其表格扩展模块允许用户插入、调整表格结构&#xff0c;适合需要数据展示的场景&#xff08;如CMS系统、报表工具&#xff09;。 1.安装依赖 yarn add…

带sdf 的post sim 小结

1.SDF文件主要内容 Delays&#xff08;module&#xff0c;device&#xff0c;interconnect&#xff0c;port&#xff09; Timing checks&#xff08;setup&#xff0c;hold&#xff0c;setuphold&#xff0c;recovery&#xff0c;removal&#xff0c;recrem&#xff09; Timing…

深入浅出:Spring IOCDI

什么是IOC IOC IOC(Inversion of Control)&#xff0c;是一种设计思想&#xff0c;在之前的SpringMVC里就在类上添加RestController和Controller注解就是使用了IOC&#xff0c;这两个注解就是在Spring中创建一个对象&#xff0c;并将注解下的类交给Spring管理&#xff0c;Spr…

PlankAssembly 笔记 DeepWiki 正交视图三维重建

manycore-research/PlankAssembly | DeepWiki PlankAssembly项目原理 这个项目是一个基于深度学习的3D重建系统&#xff0c;其核心原理是从三个正交视图的工程图纸中重建出3D形状的结构化程序表示。 核心技术原理 1. 问题定义 PlankAssembly旨在从三个正交视图的工程图纸中…