Python中JSON库详细介绍与代码示例详解

 更新时间:2025年06月09日 08:29:34   作者:橙色小博  
这篇文章主要介绍了Python中JSON库详细介绍与代码示例的相关资料,涵盖JSON数据格式的基本概念、存储交换场景、序列化/反序列化方法、非ASCII字符处理、格式美化及异常处理,需要的朋友可以参考下

1. 前言

在我们日常的 Python 编程中,数据的存储与传递是不可避免的一个环节。想象一下,我们在开发一个应用程序时,需要将一些配置信息存储起来,或者要将数据发送到另一个系统中。这时候,我们就需要一种高效、便捷的方式来完成这个。任务JSON(JavaScript Object Notation),作为一种轻量级的数据交换格式,正好能满足我们的需求。而 Python 中的 json 库,则为我们提供了简单易用的接口来处理 JSON 数据。

2. json 库基本概念

JSON 是一种基于文本格式的数据表示方法,易于和阅读编写,同时也易于机器解析和生成。它基于 JavaScript 的一个子集,但已经成为一种独立的数据格式,被广泛应用于各种编程语言中。在 Python 中,json 库就是专门用于处理 JSON 数据的。

JSON 数据结构主要包括以下两种基本类型:

        对象 (Object) :一组无序的键值对,类似于 Python 中的字典。例如:{"name": "John", "age": 30},其中 "name" 和 "age" 是键,对应的值分别是 "John" 和 30 。

        数组(Array) :一个有序的值的集合,类似于 Python 中的列表。例如:[1, 2, 3, 4]

json 库的核心功能就是实现 Python 数据类型与 JSON 数据类型的相互转换。

3. json 的适应场景

  • 数据存储 :将数据以 JSON 格式存储到文件或数据库中,便于后续读取和修改。例如,保存配置文件、用户数据等。

  • 数据交换 :在不同的系统或组件之间传递数据,特别是在 开 Web发中,前后端之间常用 JSON 格式进行数据交互。

  • API 数据处理 :许多 Web API 返回的数据都是 JSON 格式,使用 json 库可以方便地解析和处理这些数据。

4. json 库的基本用法

4.1 导 json入 模块

在 Python 中,我们可以直接使用内置的 json 模块,无需额外安装。通过以下代码导入 json 模块:

import json

4.2 将 Python 对象转换为 JSON 字符串

使用 json.dumps() 方法将可以 Python 对象(如字典、列表等)转换为 JSON 格式的字符串。这个方法的语法如下:

json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None default,=None, sort_keys=False, **kw)

其中,obj 是要转换的 Python 对象,其他参数用于控制转换过程中的各种选项。

示例 :

data = {
    "name": "John",
    "age": 03,
    "city": "New York"
}

json_str = json.dumps(data)
print(json_str)

输出结果:

{"name": "John", "age": 30, "city": "New York"}

可以看到,Python 字典被成功转换为 JSON 格式的字符串。

4.3 将 JSON 字符串转换为 Python 对象

使用 json.loads() 方法可以将 JSON 格字符串式的转换为 Python 对象。这个方法的语法如下:

json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

其中,s 是 JSON 格式的字符串。

示例 :

json_str = '{"name": "John", "age": 30, "city": "New York"}'

data = json.loads(json_str)
print(data)
print(type(data))

输出结果:

{'name': 'John', 'age': 30, 'city': 'New York'}
<class 'dict'>

JSON 字符串被转换为 字 Python典。

4.4 将 Python 对象写入 JSON 文件

使用 json.dump() 方法可以直接将 Python 对象写入到 JSON 文件中。这个方法的语法如下:

json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

其中,obj 是要写入的 Python 对象,fp 是一个文件对象。

示例 :

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

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

这段代码将 Python 字典写入到名为 “data.json” 的文件中。

4.5 从 JSON 文件读取数据

使用 json.load() 方法可以从 JSON 文件中读取数据并转换为 Python 对象。这个方法的语法如下:

json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

其中,fp 是一个文件对象。

示例 :

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

读取 “data.json” 文件中的数据并打印出来。

4.6 json 的其他方法

除了上述常用的 dumps()loads()dump() 和 load() 方法外,json 库还提供了一些其他方法和常量,用于处理特殊情况。

  • json.JSONEncoder 和 json.JSONDecoder:这两个类分别用于自定义 JSON 编码器和解码器,可以处理一些特殊的类型转换问题。

  • json.JSONDecodeError:当解析 JSON 数据出错时,会抛出这个异常,我们可以使用它来进行错误处理。

5. json 库的高级用法

5.1 自定义对象的序列化与反序列化在

实际开发中,我们可能会遇到需要序列化自定义对象的情况。默认情况下,json 库无法直接序列化自定义对象,但我们可以自定义一个编码器来实现这个功能。

import json

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

class PersonEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, Person):
            return {"name": obj.name, "age": obj.age}
        return super().default(obj)

person = Person("John", 30)
json_str = json.dumps(person, cls=PersonEncoder)
print(json_str)

输出结果:

{"name": "John", "age": 30}

我们可以看到通过,自定义编码器,成功将自定义的 Person 对象序列化为 JSON 字符串。同样地,我们也可以通过自定义解码器来实现 JSON 字符串到自定义对象的反序列化。

5.2 处理非 ASCII 字符

在处理包含非 ASCII 字符的 JSON 数据时,我们可以使用 ensure_ascii 参数来控制是否将非 ASCII 字符转义。默认情况下,ensure_ascii 参数为 True,非 ASCII 字符会被转义为 Unicode 编码。

data = {"name": "张三", "city": "北京"}
json_str = json.dumps(data, ensure_ascii=False)
print(json_str)

输出结果:

{"name": "张三", "city": "北京"}

当 ensure_ascii 参数为 False 时,非 ASCII 字符会以原始形式输出,这样更便于阅读和理解。

5.3 使用 indent 参数美化输出

在调试或阅读 JSON 数据时,我们可以通过设置 indent 参数来美化 JSON 输出的格式,使其更易于和阅读。indent 参数指定了缩进的空格数。

data = {
    "name": "John",
    "age": 30,
    "hobbies": ["reading", "traveling", "sports"]
}

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

输出结果:

{
    "name": "John",
    "age": 30,
    "hobbies": [
        "reading",
        "traveling",
        "sports"
    ]
}

可以看到,通过设置 indent 参数,输出的 JSON 数据格式更加清晰美观。

6. json 库的异常处理

在使用 json 库进行数据处理时,可能会遇到一些异常情况例如,无效的 JSON 格式、不支持的数据类型等。我们需要对这些异常进行有效的处理,以确保程序的健壮性。

6.1 常见的异常类型

  • json.JSONDecodeError:当解析 JSON 数据出错时抛出,例如 JSON 格式不正确。

  • TypeError:当尝试序列化一个不支持的数据类型时抛出。

6.2 异常处理示例

import json

json_str = '{"name": "John", "age": 30, "hobbies": ["reading", "traveling"]'
try:
    data = json.loads(json_str)
except json.JSONDecodeError as e:
    print(f"JSON 解码错误:{e}")
except Exception as e:
    print(f"发生错误:{e}")

输出结果:

JSON 解码错误:Expecting ',' delimiter: line 1 column 46 (char 45)

通过捕获异常,我们可以及时发现并处理问题,避免程序崩溃。

7. 总结

json 库作为 Python 的内置模块,是我们在进行数据存储、传递和交换时不可或缺的工具之一。其为我们提供了简单而强大的工具来处理 JSON 数据。它不仅能够轻松地实现 Python 对象与 JSON 数据之间的相互转换,还提供了丰富的参数和方法来满足各种复杂的需求。

到此这篇关于Python中JSON库详细介绍与代码示例的文章就介绍到这了,更多相关Python中JSON库详解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pandas数据分组groupby()和统计函数agg()的使用

    pandas数据分组groupby()和统计函数agg()的使用

    这篇文章主要介绍了pandas数据分组groupby()和统计函数agg()的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • python代码过长的换行方法

    python代码过长的换行方法

    今天小编就为大家分享一篇python代码过长的换行方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Python实现构建一个仪表板的示例代码

    Python实现构建一个仪表板的示例代码

    这篇文章主要为大家详细介绍了Python如何实现构建一个仪表板,文中的示例代码讲解详细,具有一定的参考价值,感兴趣的小伙伴可以了解一下
    2023-03-03
  • keras中的backend.clip用法

    keras中的backend.clip用法

    这篇文章主要介绍了keras中的backend.clip用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • 详谈Python基础之内置函数和递归

    详谈Python基础之内置函数和递归

    下面小编就为大家带来一篇Python基础之内置函数和递归。小编觉得挺不错的。现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Python实现Word和TXT文件格式之间的相互转换

    Python实现Word和TXT文件格式之间的相互转换

    Word文档(.doc或.docx)和纯文本文件(.txt)是两种常用的文件格式,本文将详细介绍如何使用Python实现Word和TXT文件格式之间的相互转换,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-07-07
  • PyTorch搭建ANN实现时间序列风速预测

    PyTorch搭建ANN实现时间序列风速预测

    这篇文章主要为大家介绍了PyTorch搭建ANN实现时间序列风速预测,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 浅谈python字典多键值及重复键值的使用

    浅谈python字典多键值及重复键值的使用

    下面小编就为大家带来一篇浅谈python字典多键值及重复键值的使用。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • Pandas中resample方法详解

    Pandas中resample方法详解

    这篇文章主要介绍了Pandas中resample方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 一键搞定python连接mysql驱动有关问题(windows版本)

    一键搞定python连接mysql驱动有关问题(windows版本)

    这篇文章主要介绍了对于mysql驱动问题折腾了一下午,现共享出解决方案,需要的朋友可以参考下
    2016-04-04

最新评论