Python中的JSON编码器和解码器包2025年1月5日 | 阅读6分钟 引言在本教程中,我们将学习 Python 中的 JSON 编码器和解码器包。JSON 是 JavaScript 对象表示法的缩写。JSON 是一种轻量级的数据交换格式。它类似于 pickle。但是,pickle 序列化是 Python 特有的,而 JSON 格式被许多编程语言使用。Python 标准库中的 Json 模块实现了类似于 pickle 和 marshal 模块的对象序列化。与 pickle 模型一样,json 模块提供了 dumps() 和 loads() 函数,用于将 Python 对象序列化为 JSON 编码的字符串。dump() 和 load() 函数用于序列化写入或读取自文件的 Python 对象。 如何开始使用 Python 中的 JSON 编码器和解码器包?Python 提供了内置的 json 库来处理 JSON 对象。您需要做的就是使用以下命令将 JSON 模块导入您的 Python 程序,并开始使用其函数。 现在,JSON 模块有很多函数,我们将只讨论其中的 2 个。它们是 dumps 和 loads。将 Python 对象转换为 json 对象的过程称为 JSON 序列化或编码。将 json 对象转换为 Python 对象是一个逆过程,称为反序列化或解码。我们将使用 json.dumps() 进行编码,使用 json.loads() 进行解码。显然,dumps 方法会将 Python 对象转换为 JSON 字符串,而加载过程将从序列化的 JSON 字符串解析 Python 对象。 值得注意的是,序列化过程中创建的 JSON 对象只是一个 Python 字符串。因此,您将在本教程中看到“JSON 对象”和“JSON 字符串”这两个术语。因此,当您使用 load 方法时,默认会返回 Python 字典(除非您按照教程的自定义部分中所述的方式更改此行为)。 程序代码 1 这里,我们提供了一个使用 Python 中的 JSON 编码器和解码器包的程序代码。代码如下: 输出 现在我们编译上面的代码并从中找到结果。输出如下: {"a": 0, "b": 1, "c": 2, "d": 3} <class 'str'> {'a': 0, 'b': 1, 'c': 2, 'd': 3} <class 'dict'> 程序代码 2 这里,我们提供另一个使用 Python 中的 JSON 编码器和解码器包的程序代码。代码如下: 输出 现在我们编译上面的代码并从中找到结果。输出如下: ["Priyanka", {"marks": [90, 60, 80]}] ['Priyanka', {'marks': [90, 60, 80]}] {"age": 24, "marks": 90, "rank": 2} {'age': 24, 'marks': 90, 'rank': 2} 编码和解码 Python 中的自定义对象在这种情况下,我们需要在序列化方面付出更多的努力。让我们看看如何做到这一点。假设我们有一个使用学生的类,并希望使其可 JSON 序列化。最简单的方法是在我们的类中定义一个方法,该方法将返回我们类实例的 JSON 版本。 程序代码 1 这里,我们提供了一个用于编码和解码 Python 中自定义对象的程序代码。代码如下: 输出 现在我们编译上面的代码并从中找到结果。输出如下: { "name": "Priyanka", "roll_no": 40, "age": 24, "address": { "city": "Bhatpara", "state": "West Bengal", "pin": "743123" } } <class 'str'> {'name': 'Priyanka', 'roll_no': 40, 'age': 24, 'address': {'city': 'Bhatpara', 'state': 'West Bengal', 'pin': '743123'}} <class 'dict'> 程序代码 2 这里,我们提供另一个用于编码和解码 Python 中自定义对象的程序代码。实现这一目标的一种方法是创建一个扩展 JSONEncoder 的新类,然后将此类作为参数传递给 dumps 方法。代码如下: 输出 现在我们编译上面的代码并从中找到结果。输出如下: { "name": "Priyanka", "roll_no": 40, "age": 24, "address": { "city": "Bhatpara", "state": "West Bengal", "pin": "743123" } } <class 'str'> {'name': 'Priyanka', 'roll_no': 40, 'age': 24, 'address': {'city': 'Bhatpara', 'state': 'West Bengal', 'pin': '743123'}} <class 'dict'> Python 中的自定义解码在自定义解码中,如果我们想将 JSON 转换为另一个 Python 对象(而不是原始或默认字典,例如),这是一种非常简单的方法;就是使用 loads 方法的 object_hook 参数。我们所要做的就是定义一个方法来定义我们想要如何处理数据,然后将该方法作为 object_hook 参数传递给 load 方法;请参阅提供的代码。此外,返回的对象将不再是 Python 字典。即使我们传递的方法的返回类型是 Object_hook,它仍然是 load 方法的返回类型。 程序代码 这里,我们提供了一个用于 Python 中自定义解码的程序代码。代码如下: 输出 现在我们编译上面的代码并从中找到结果。输出如下: The result is: (1+2j) The type of the result is: <class 'complex'> 在 Python 中使用编码和解码自定义对象的优势使用 Python 的 json 模块创建自定义编码器和自定义解码器具有多种优势,如下所示: 1. 自定义数据管理 自定义编码器和解码器可以将复杂的 Python 对象或未格式化的数据序列化和反序列化为 JSON 格式(或反之亦然)。 2. 控制和灵活性 开发人员可以更好地控制自定义数据类型如何进入 JSON 并解码为 Python 对象,从而确保数据传输过程中的准确性和一致性。 3. 兼容性和互操作性 通过使用自定义编码器和解码器,开发人员可以确保 Python 文件与其他使用 JSON 作为数据交换格式的系统之间无缝兼容。 4. 自定义序列化逻辑 您可以自定义序列化和反序列化逻辑来管理私有数据或复杂对象,并简化不同系统或数据存储之间的数据交换。 结论因此,在本教程中,我们学习了 Python 中的 JSON 编码器和解码器包。json 模块提供了 dumps() 和 loads() 函数,用于将 Python 对象序列化为 JSON 编码的字符串。因此,Python 的 json 模块中创建自定义编码器和解码器的能力使开发人员能够有效地管理不同数据集的序列化和反序列化,从而提供控制、灵活性和数据转换的更改。这些工具确保了 Python 应用程序在处理复杂文件或自定义类时的一致性和互操作性。 下一个主题Python http headers |
Python 中的 chess-board 包是一个轻量级且高效的库,用于处理棋盘表示和走子逻辑。它通过提供设置和修改棋盘位置、生成合法走子以及跟踪游戏状态的工具,使开发人员能够轻松地以编程方式管理和操作国际象棋游戏。
11 分钟阅读
介绍:在本教程中,我们将学习如何使用 Python 中的 Pandas 将列转换为 Int。Python 是数据分析和数据操作的有用语言之一,原因充分。凭借其简单的语法和库,Python 提供了强大的文档。Pandas...
7 分钟阅读
Python 中的“as”关键字 Python 以其灵活性和可读性而闻名,它具有许多使编码更容易并增加功能的功能。其中一个功能是“as”关键字,它是一个用于处理异常、别名和导入的有用工具。本文深入探讨了该关键字的细微差别...
阅读 8 分钟
简介 Python 的 assortments 模块中的 namedtuple 长期以来一直是通过创建带有命名字段的轻量级类来简化代码的首选工具。然而,随着 Python 3.6 的到来以及 typing.NamedTuple 的引入,Python 开发人员获得了一个更...
阅读 6 分钟
在 Python 中,比较运算符用于使用运算符(如“<”表示小于,“>”表示大于或“==”表示等于)来比较两个值。它也称为关系运算符。您甚至可以使用运算符...
阅读 6 分钟
分布式处理简介 在当今的计算世界中,数据生成和处理已得到扩展。这种增长需要更强大的计算方法和基础设施。分布式处理是一种解决需要处理大型数据集和复杂算法的计算扩展性挑战的方法。这种方法...
阅读9分钟
? 当我们处理文件时,我们经常需要识别两个文件之间的差异。Python 为我们提供了许多强大的工具来帮助我们快速准确地完成此操作。在接下来的教程中,我们将看到查找差异的不同方法...
7 分钟阅读
? 简介 值得注意的是,在微服务和现代 Web 等应用的时代,您的服务必须保持正常运行。实现这一点的一种方法是实施健康检查。通过健康检查,可以检查...的状态...
5 分钟阅读
Python 有大量优秀的 NLP 库和工具,它们为我们提供了检测语言的酷方法。在本指南中,我们将介绍四个可以区分英语和其他语言的 Python 库:langdetect langid pycld2 fastText 让我们仔细看看这些库。langdetect...
阅读 6 分钟
Python 是一种通用且强大的编程语言,广泛用于各种应用程序,从 Web 开发到数据分析和机器学习。使 Python 如此灵活的特性之一是其面向对象编程 (OOP) 范式。在 Python 中,万物皆为...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India