Menu
CoddyTech

格式化 JSON 输出

Coddy Python JSON 课程的第 5 课,共 9 课。

处理 JSON 数据时,通常可以通过格式化输出来提高可读性。Python 的 json.dumps() 函数提供了一些参数,用于控制 JSON 输出的格式,让它更便于阅读。这个过程通常称为“美化打印”。

indent 参数

json.dumps() 中的 indent 参数允许你指定缩进的空格数,从而创建更易读的层级结构:


import json

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

# 不缩进
print(json.dumps(data))

# 使用缩进
print(json.dumps(data, indent=2))

使用 indent=2 时,输出如下:


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

separators 参数

separators 参数允许你指定项目和键值对之间的分隔符。它是由两个字符串组成的元组:(item_separator, key_separator)。


# 默认分隔符
print(json.dumps(data, indent=2))

# 自定义分隔符
print(json.dumps(data, indent=2, separators=(', ', ': ')))

默认分隔符是 (', ', ': ')。你可以使用这个参数让输出更紧凑,或添加额外的空格。

组合参数

你可以组合使用这些参数,更精细地控制 JSON 输出:


formatted_json = json.dumps(data, indent=4, separators=(', ', ': '))
print(formatted_json)

这样组合后,JSON 输出格式整齐且易于阅读。在处理复杂的嵌套结构,或需要以更易读的格式展示 JSON 数据时,这种方式尤其有用。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

challenge icon

挑战

简单

创建一个函数,用自定义缩进和分隔符格式化嵌套的 JSON 结构。该函数应:

  1. 接受三个参数:一个 Python 字典或列表、缩进级别,以及一个表示是否紧凑输出的布尔标记。
  2. 使用 json.dumps() 将输入转换为 JSON 字符串。
  3. 如果紧凑标记为 False,则将缩进设置为指定级别;否则不使用缩进。
  4. 如果紧凑标记为 False,则使用逗号后跟一个空格(", ")作为项分隔符,并使用冒号后跟一个空格(": ")作为键分隔符。如果紧凑标记为 True,则使用不带空格的逗号(",")和冒号(":")。
  5. 返回格式化后的 JSON 字符串。

将提供以下输入:


{"menu": {"id": "file", "value": "File", "popup": {"menuitem": [{"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"}]}}}
4
false

打印格式化后的 JSON 字符串。

亲手试试

import json

# 读取输入
json_input = input()
indent_level = int(input())
compact = input().lower() == 'true'

# 解析 JSON 输入
data = json.loads(json_input)

def format_json(data, indent, compact):
    # TODO: 在这里编写你的代码
    # 实现自定义 JSON 格式化函数
    pass

# 格式化 JSON 并打印结果
formatted_json = format_json(data, indent_level, compact)
print(formatted_json)

Python JSON中的所有课

自己练习: Python 在线编译器

格式化并浏览任意 JSON: JSON 格式化工具