Python JSON

2025 年 4 月 17 日 | 6 分钟阅读

JSON,即 JavaScript Object Notation,是一种流行的在线数据交换格式。JSON 是在客户端和服务器之间组织数据的最佳格式。编程语言 JavaScript 与这种语言的语法相似。JSON 的主要目标是客户端和 Web 服务器之间的数据传输。它是交换数据最有效的方法,并且易于掌握。它与许多其他编程语言兼容,包括 Python、Perl、Java 等。

在 JavaScript 中,JSON 主要支持以下六种数据形式

  • String
  • 数字
  • Boolean
  • Null
  • Object
  • Array

JSON 的基础是两种结构

  • 数据以名称/值对的形式存储。它被视为记录、对象、字典、哈希表或键控列表。
  • 数组、向量、列表或序列都被视为等同于值的有序列表。

Python 字典与 JSON 数据结构相似。以下是 JSON 数据的示例

使用 Python JSON

Json 是 Python 提供的一个模块。Python 支持标准库中的 marshal 和 pickle 模块,JSON API 的功能与这些库相似。Python 原生支持 JSON 特性。

JSON 数据的序列化过程称为编码。数据通过序列化技术转换为一系列字节并在网络上传输。

输出

['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_encoder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'load', 'loads', 'scanner']

本节将介绍以下技术

  • load()
  • loads()
  • dump()
  • dumps()

序列化 JSON

将 Python 对象转换为 JSON 的过程称为序列化。当计算机需要处理大量数据时,将数据存储在文件中是一个好主意。使用 JSON 函数,我们可以将 JSON 数据存储在文件中。json 模块中提供了 dump() 和 dumps() 方法,用于修改 Python 对象。

以下 JSON 项由 Python 对象创建。以下是每个的列表

序号。Python 对象JSON
1.字典(Dict)Object
2.list, tupleArray
3.StrString
4.int, float数字
5.truetrue
6.Falsefalse
7.null
  • 将 JSON 数据写入文件的函数 dump

Python 中提供了一个 dump() 函数,用于以 JSON 格式通信(编码)数据。它接受两个位置参数:需要序列化的数据对象和需要接收字节的类文件对象。

让我们看一个简单的序列化示例

输出

{"Name" : "Peter", "Roll_no" : "0090014" , "Grade" : "A",  "Age" : 20, "Subject" : ["Computer Graphics", "Discrete Mathematics", "Data Structure"] }

在上面的程序中,以写入模式打开了一个名为 data.json 的文件。我们以写入模式打开此文件,以便在文件不存在时创建它。字典使用 json.dump() 方法转换为 JSON 字符串。

  • 函数 dumps ()

dumps() 函数用于将序列化数据保存在 Python 文件中。它只接受一个参数,即要序列化的 Python 数据。我们不将数据写入磁盘,因此不使用类文件参数。让我们考虑以下示例

输出

{"Name": "Peter", "Roll_no": "0090014", "Grade": "A", "Age": 20}

JSON 允许分层列表、元组、对象以及字符串和数字等基本数据类型。

输出

["Welcome", "to", "javaTpoint"]
["Welcome", "to", "javaTpoint"]
"Hello"
1234
23.572
true
false
null

JSON 反序列化

将 JSON 数据转换为 Python 对象的过程称为反序列化。json 模块的 load() 和 loads() 方法用于将 JSON 数据转换为 Python 对象。以下是每个的列表

序号JSONPython
1.Objectdict
2.Arraylist
3.Stringstr
4.数字(int)int
5.truetrue
6.falseFalse
7.null

尽管技术上并非 JSON 数据的精确转换,但上表描述了序列化表的相反情况。这表明如果我们将对象编码然后稍后再次解码,则该对象可能不相同。

让我们使用一个真实的例子。如果有人将某物翻译成中文,然后再翻译回英文,则翻译可能不正确。以这个简单的例子为例。

输出

<class 'tuple'>
<class 'list'>
  • load() 方法

load() 函数用于将文件中的 JSON 数据反序列化为 Python 对象。考虑以下实例

输出

{'Name': 'Peter', 'Roll_no': '0090014', 'Grade': 'A', 'Age': 20}

在上面的程序中,我们使用 dump() 函数将 Python 对象编码到文件中。然后,我们使用 load() 函数和参数 read_file 读取 JSON 文件。

loads() 函数是 json 模块的另一个功能,用于将 JSON 输入转换为 Python 对象。它与 load() 函数非常相似。考虑以下实例

输出

['Mathew', 'Peter', [10, 32.9, 80], {'Name': 'Tokyo'}]

json.load() 与 json.loads()

json.load() 函数用于加载 JSON 文件,而 json.loads() 函数用于加载字符串。

json.dump() 与 json.dumps()

当我们将 Python 对象序列化为 JSON 文件时,我们使用 json.dump() 函数。我们还使用 json.dumps() 函数将 JSON 数据转换为字符串进行处理和打印。

Python 漂亮打印 JSON

有时需要分析和调试大量 JSON 数据。这可以通过向 json.dumps() 和 json.dump() 函数提供额外的参数(例如 indent 和 sort_keys)来完成。

注意:dump() 和 dumps() 函数都接受 indent 和 short_keys 参数。

请看以下示例

输出

{
    "Age": 23,
    "City": "English",
    "Name": "Andrew",
    "Number": 90014,
    "Subject": [
        "Data Structure",
        "Computer Graphics",
        "Discrete mathematics"
    ]
}

在上面的代码中,键按升序排序,并且 indent 参数已给定五个空格。Sort_key 的默认值为 False,indent 的默认值为 None。

编码与解码

将文本或值转换为加密形式的过程称为编码。只有选定的用户才能在解码后使用加密数据。序列化是编码的另一个名称,反序列化是解码的另一个名称。对于 JSON(对象) 格式,执行编码和解码。Python 中提供了一个用于此类任务的流行模块。可以在 Windows 上使用下面列出的命令进行安装

编码 - encode() 函数是 demon 包的一部分,用于将 Python 对象转换为 JSON 字符串表示形式。

语法如下

示例 1 - 使用 demjson 包进行编码

输出

[{"Age":20,"Name":"Peter","Subject":"Electronics"}]

解码 - demon 模块的 decode() 函数用于将 JSON 对象转换为 Python 格式类型。

语法如下

输出

['Peter', 'Smith', 'Ricky', 'Hayden']

在本教程中,我们学习了 Python JSON。JSON 是在客户端和 Web 服务器之间传输数据最有效的方式。