Atri Website

Back

Json#

定义#

JSON (JavaScript Object Notation) 是一种轻量级的、人类易于阅读和编写、同时也易于机器解析和生成的数据交换格式。

尽管它的名字来源于 JavaScript,但 JSON 是完全独立于语言的,几乎所有现代编程语言都有解析和生成 JSON 数据的库。可以把它想象成一种 通用数据语言,Python 可以用它和 C++、 Java、JavaScript、Go 等任何其他语言进行无障碍的数据交流。本质上是一个特定格式的字符串

JSON 的基本结构和规则#

JSON 有两种结构:

  1. 对象 (Object): 一系列 键/值对 (key/value pairs) 的无序集合。-------就是python 的字典
    • 一个对象以 {(左花括号)开始,以 }(右花括号)结束。
    • 每个“键”都是一个字符串,并且必须用双引号 ” 括起来。
    • 键和值之间用 :(冒号)分隔。
    • 键/值对之间用 ,(逗号)分隔。
    • 这在 Python 中几乎完全对应于**字典 **。
  2. 数组 (Array): 一系列值的有序集合。-----------就是 python 的列表
    • 一个数组以 [(左方括号)开始,以 ](右方括号)结束。
    • 值之间用 ,(逗号)分隔。
    • 这在 Python 中完全对应于**列表 **。

JSON 支持的数据类型#

JSON 的“值”可以是以下几种类型之一:

  • 字符串: 必须用双引号 ” 括起来。例如 “hello world”。
  • 数字: 整数或浮点数,不需要引号。例如 101 或 3.14。
  • 对象 : 可以是另一个 JSON 对象,实现数据嵌套。
  • 数组: 可以是一个 JSON 数组。
  • 布尔值: 必须是 true 或 false(注意是小写)。
  • 空值: 必须是 null(注意是小写)。

完整示例#

这个例子展示了一个用户对象,其中包含了各种数据类型:

{
  "userId": 1001,
  "username": "coder_alex",
  "isActive": true,
  "profile": {
    "realName": "Alex Smith",
    "avatarUrl": "/images/alex.png"
  },
  "tags": [
    "Python",
    "API",
    "Web Development"
  ],
  "lastLogin": null
}
json

Python 中的 JSON 格式转换#

Python 内置了一个强大的 json 模块,可以轻松地在 Python 对象和 JSON 格式的字符串之间进行转换。

import json
python

这个过程主要涉及两对核心操作:

  1. 序列化 (Serialization): 将 Python 对象转换为 JSON 格式的字符串。
    • json.dumps(): 将 Python 对象转换成字符串 (string)
    • json.dump(): 将 Python 对象写入文件对象 (file object)
  2. 反序列化 (Deserialization): 将 JSON 格式的字符串转换为 Python 对象。
    • json.loads(): 从字符串 (string) 中加载数据,转换成 Python 对象。
    • json.loads(): 从文件对象 (file object) 中加载数据,转换成 Python 对象。

记忆技巧:dump / load 后面带 s 的 (dumps, loads) 都是处理字符串 (string) 的。

将 Python 字典转换为 JSON 字符串 (json.dumps)#

这通常用于将数据准备好以便通过网络发送(例如,在 API 响应中)。

将 JSON 字符串转换为 Python 字典(json.loads)#

json.loads() 的作用就是接收一个字符串作为输入,然后按照 JSON 语法规则去解析它。当你把 {…} 整体放进一个字符串里时,true 和 null 就只是字符串里的文本,json.loads() 会正确地将它们识别并转换为 Python 对应的 True 和 None。

这通常用于解析从 API 或文件中读取的 JSON 字符串数据。

JSON 与 Python 的数据类型映射关系#

在转换过程中,数据类型会按照下表进行映射:

也就是说,json 在 py 里面是一个字符串,这个字符串的内容、格式是 json 格式

JSONPython
objectdict
arraylist
stringstr
number (int)int
number (real)float
trueTrue
falseFalse
nullNone

将 Python 字典写入 JSON 文件 (json.dump)#

直接将 Python 字典保存到文件中,非常方便。

从 JSON 文件中读取数据 (json.load)#

直接从文件中读取 JSON 数据并解析为 Python 字典。

总结:

  • JSON 是一种通用的、人类可读的数据格式,核心是字典(字典)数组 (列表)
  • Python 的 json 模块是处理 JSON 的标准工具。
  • 处理字符串dumps() (Python -> JSON) 和 loads() (JSON -> Python)。
  • 处理文件dump() (Python -> 文件) 和 load() (文件 -> Python)。
  • 处理中文或非 ASCII 字符时,记得在 dump() / dumps() 中设置 ensure_ascii=False
  • 为了文件美观,设置 indent=4
json数据格式
Author Juyao Huang
Published at October 10, 2025
Comment seems to stuck. Try to refresh?✨