0

0

如何使用Python处理JSON数据?编码解码方法详解

絕刀狂花

絕刀狂花

发布时间:2025-07-24 10:37:01

|

1192人浏览过

|

来源于php中文网

原创

python处理json数据的核心方法包括:1. 使用json.dumps()将python对象转为json字符串,可设置indent参数美化输出;2. 用json.loads()将json字符串还原为python对象,需注意格式合法性;3. 利用json.dump()和json.load()实现文件读写,需正确打开文件模式;4. 自定义default函数和object_hook函数处理复杂类型如自定义类。这些方法覆盖了json操作的常见需求,实际使用时需注意异常处理和格式验证。

如何使用Python处理JSON数据?编码解码方法详解

处理JSON数据在Python中非常常见,尤其是在与API交互、读写配置文件或进行前后端数据传递时。Python内置了json模块,专门用来处理JSON格式的数据。下面从实际使用角度出发,分几个关键点讲清楚怎么用。

如何使用Python处理JSON数据?编码解码方法详解

1. 把Python对象转成JSON字符串:json.dumps()

这是最常见的“编码”操作,比如你有一个字典或者列表,想把它变成字符串传给前端或者保存到文件里。

  • 使用方法:json.dumps(data, indent=2)
    indent参数是美化输出的缩进空格数,调试时很有用。

举个例子:

立即学习Python免费学习笔记(深入)”;

如何使用Python处理JSON数据?编码解码方法详解
import json

data = {
    "name": "Alice",
    "age": 30,
    "is_student": False
}

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

注意:

  • Python中的True/False会被转成JSON的true/false
  • None会被转成null
  • 如果对象里有自定义类实例,默认会报错,需要自己实现序列化逻辑

2. 把JSON字符串转回Python对象:json.loads()

这个操作叫“解码”,适用于你收到一段JSON字符串(比如从网络请求中获取),想把它还原成Python里的字典或列表来操作。

如何使用Python处理JSON数据?编码解码方法详解
  • 使用方法:json.loads(json_string)

示例:

我要服装批发网
我要服装批发网

由逍遥网店系统修改而成,修改内容如下:前台商品可以看大图功能后台商品在线添加编辑功能 (允许UBB)破解了访问统计系统增加整合了更加强大的第三方统计系统 (IT学习者v1.6)并且更新了10月份的IP数据库。修正了后台会员订单折扣金额处理错误BUG去掉了会员折扣价这个功能,使用市场价,批发价。这样符合实际的模式,批发价非会员不可看修正了在线编辑无法使用 “代码&rdqu

下载
json_str = '{"name": "Bob", "age": 25, "is_student": true}'
data = json.loads(json_str)

print(data["name"])  # 输出 Bob

常见问题:

  • JSON字符串格式不正确时会抛出异常
  • 建议先用在线工具验证结构是否合法
  • 如果原始JSON中有特殊类型(如日期字符串),需要手动转换

3. 读写JSON文件:json.dump() 和 json.load()

除了处理字符串,更多时候你会直接和文件打交道。

写入文件:json.dump()

with open("data.json", "w") as f:
    json.dump(data, f, indent=2)

读取文件:json.load()

with open("data.json", "r") as f:
    data = json.load(f)

注意事项:

  • 文件打开模式要正确(写用w,读用r
  • 多次写入一个文件时要注意格式,不能直接append JSON内容,否则会破坏结构
  • 如果文件不存在,open("xxx.json", "r")会报错,建议配合os.path.exists()检查

4. 处理复杂类型:自定义序列化和反序列化

默认情况下,json.dumps()只能处理基本类型(dict、list、str、int等)。如果你有自定义类或者特殊结构,就需要自己处理。

自定义序列化

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

def default(o):
    if isinstance(o, Person):
        return o.__dict__
    raise TypeError()

p = Person("Tom", 28)
json_str = json.dumps(p, default=default)

自定义反序列化

def object_hook(d):
    if 'name' in d and 'age' in d:
        return Person(d['name'], d['age'])
    return d

data = json.loads(json_str, object_hook=object_hook)

这种方式适合封装到工具函数里复用,避免每次都要写重复代码。


基本上就这些。只要掌握了这几个核心函数,就能应对大多数JSON处理场景了。记住,虽然功能简单,但格式错误和类型不匹配是常见坑点,处理前最好加一层判断或异常捕获。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

748

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

634

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

758

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

617

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1261

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

577

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

705

2023.08.11

Java 项目构建与依赖管理(Maven / Gradle)
Java 项目构建与依赖管理(Maven / Gradle)

本专题系统讲解 Java 项目构建与依赖管理的完整体系,重点覆盖 Maven 与 Gradle 的核心概念、项目生命周期、依赖冲突解决、多模块项目管理、构建加速与版本发布规范。通过真实项目结构示例,帮助学习者掌握 从零搭建、维护到发布 Java 工程的标准化流程,提升在实际团队开发中的工程能力与协作效率。

10

2026.01.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 0.6万人学习

Django 教程
Django 教程

共28课时 | 3万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号