Python3 JSON 字典整齐格式化

引言

在日常的开发工作中,我们经常需要处理各种格式的数据。特别是在与外部系统进行数据交互时,常常会遇到 JSON 格式的数据。JSON(JavaScript Object Notation)是一种常用的数据交换格式,它易于阅读和编写,同时也易于解析和生成。在 Python 中,我们可以使用内置的 json 模块来处理 JSON 数据。

当我们处理 JSON 数据时,有时候我们需要对其进行美化,以便更好地阅读和调试。本文将介绍如何使用 Python3 中的 json 模块来对 JSON 字典进行整齐格式化。

Python3 JSON 模块简介

json 是 Python3 中的内置模块,用于处理 JSON 数据。它提供了一组函数和类,可以将 JSON 数据解析为 Python 对象,或者将 Python 对象转换为 JSON 数据。json 模块的常用函数和类如下:

  • json.dumps(obj, indent=None, separators=None, sort_keys=False):将 Python 对象转换为 JSON 字符串。
  • json.loads(s, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None):将 JSON 字符串解析为 Python 对象。
  • 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):将 Python 对象转换为 JSON 并写入文件对象。
  • json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):从文件对象中读取 JSON 字符串并解析为 Python 对象。

下面我们将使用这些函数和类来实现 JSON 字典的整齐格式化。

示例

假设我们有以下的 JSON 字典数据:

data = {
    "name": "John Doe",
    "age": 30,
    "city": "New York",
    "hobbies": ["reading", "swimming", "coding"],
    "friends": [
        {"name": "Alice", "age": 28},
        {"name": "Bob", "age": 32},
        {"name": "Charlie", "age": 29}
    ]
}

我们想要将这个 JSON 字典数据整齐地输出到控制台,以便更好地阅读和调试。我们可以使用 json.dumps() 函数来实现这一目标。

import json

data = {
    "name": "John Doe",
    "age": 30,
    "city": "New York",
    "hobbies": ["reading", "swimming", "coding"],
    "friends": [
        {"name": "Alice", "age": 28},
        {"name": "Bob", "age": 32},
        {"name": "Charlie", "age": 29}
    ]
}

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

运行结果如下:

{
    "name": "John Doe",
    "age": 30,
    "city": "New York",
    "hobbies": [
        "reading",
        "swimming",
        "coding"
    ],
    "friends": [
        {
            "name": "Alice",
            "age": 28
        },
        {
            "name": "Bob",
            "age": 32
        },
        {
            "name": "Charlie",
            "age": 29
        }
    ]
}

正如我们所见,indent=4 的设置使得输出的 JSON 字符串具有了整齐的格式。每个键值对都在单独的一行显示,并且使用了缩进来表示层次结构。

我们还可以通过设置 separators 参数来定制 JSON 字符串的格式。例如,我们可以将逗号后面的空格去掉,使得输出的 JSON 字符串更加紧凑。代码示例如下:

import json

data = {
    "name": "John Doe",
    "age": 30,
    "city": "New York",
    "hobbies": ["reading", "swimming", "coding"],
    "friends": [
        {"name": "Alice", "age": 28},
        {"name": "Bob", "age": 32},
        {"name": "Charlie", "age": 29}
    ]
}

formatted_json = json.dumps