在 Python 中将对象打印为 JSON

使用 json.dumps() 方法将对象打印为 JSON,例如 print(json.dumps(my_dict))。 json.dumps() 方法将 Python 对象转换为 JSON 格式的字符串。

import json

my_dict = {'id': 1, 'name': 'Zadmei'}

# ✅ Print object as JSON
json_str = json.dumps(my_dict)
print(json_str)  # 👉️ {"id": 1, "name": "Zadmei"}

# -------------------------------------------------

# ✅ Pretty print object as JSON
json_str = json.dumps(my_dict, indent=4)
# {
#     "id": 1,
#     "name": "Zadmei"
# }
print(json_str)

# -------------------------------------------------


# ✅ Print class instance as JSON
class Employee():
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary


bobby = Employee('zadmei', 100)

json_str = json.dumps(bobby.__dict__)
print(json_str)  # 👉️ {"name": "zadmei", "salary": 100}

在 Python 中将对象打印为 JSON

我们使用 json.dumps() 方法将对象打印为 JSON。

json.dumps 方法将 Python 对象转换为 JSON 格式的字符串。

import json

my_dict = {'id': 1, 'name': 'Zadmei'}

json_str = json.dumps(my_dict)
print(json_str)  # 👉️ {"id": 1, "name": "Zadmei"}

print(type(json_str))  # 👉️ <class 'str'>

如果您有 JSON 字符串并且需要将其转换为原生 Python 对象,请使用 json.loads() 方法。

import json

my_dict = {'id': 1, 'name': 'Zadmei'}

json_str = json.dumps(my_dict)
print(json_str)  # 👉️ {"id": 1, "name": "Zadmei"}

native_obj = json.loads(json_str)
print(native_obj)  # 👉️ {'id': 1, 'name': 'Zadmei'}

json.loads 方法将 JSON 字符串解析为原生 Python 对象。

如果我们需要将对象漂亮地打印为 JSON,请在调用 json.dumps() 时将 indent 参数设置为 4。

import json

my_dict = {'id': 1, 'name': 'Zadmei'}

json_str = json.dumps(my_dict, indent=4)
# {
#     "id": 1,
#     "name": "Zadmei"
# }
print(json_str)

如果 indent 设置为非负整数,则 JSON 数组元素或对象成员将使用指定的缩进级别进行漂亮打印。


在 Python 中将类对象打印为 JSON

要将类对象打印为 JSON:

  1. 访问类实例的 __dict__ 属性。
  2. 将结果传递给 json.dumps() 方法。
  3. 使用 print() 函数打印对象的 JSON 表示。
import json


class Employee():
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary


zadmei = Employee('zadmei', 100)

json_str = json.dumps(zadmei.__dict__)
print(json_str)  # 👉️ {"name": "zadmei", "salary": 100}

默认的 JSONEncoder 类不能直接将类实例转换为 JSON,所以我们不得不在实例上使用 __dict__ 属性。

__dict__ 属性返回一个包含实例属性的字典,可以传递给 json.dumps() 方法。

import json


class Employee():
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary


zadmei = Employee('zadmei', 100)
print(zadmei.__dict__) # 👉️ {'name': 'zadmei', 'salary': 100}

json_str = json.dumps(zadmei.__dict__)
print(json_str)  # 👉️ {"name": "zadmei", "salary": 100}

JSONEncoder 类默认支持以下对象和类型。

Python JSON
dict object
list, tuple array
str string
int, float, int and float derived Enums number
True true
False false
None null

注意 JSONEncoder 类默认不支持类实例到 JSON 的转换。