📜  Python中的 json.dumps()(1)

📅  最后修改于: 2023-12-03 15:19:23.755000             🧑  作者: Mango

Python中的 json.dumps()

在Python中,json.dumps()是一个用于将Python对象转换为JSON格式的方法。dumps表示"dump string",即将对象转化为字符串格式。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端的数据交互。

语法

json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

参数解释:

  • obj: 要序列化为JSON的Python对象
  • skipkeys: 如果对象包含无法转义的键,则跳过该键(默认为False)
  • ensure_ascii: 转义所有非ASCII字符(默认为True)
  • check_circular: 检查循环引用(默认为True)
  • allow_nan: 允许序列化NaN、Infinity和-Infinity(默认为True)
  • cls: 定义自定义的编码器对象(默认为None)
  • indent: 指定缩进的空白字符数,用于格式化输出
  • separators: 定义分隔符,如(',', ':')用于输出格式化的JSON(默认为(None, ': '))
  • default: 如果对象中存在无法序列化的类型,则使用default方法转换(默认为None)
  • sort_keys: 对输出的JSON进行排序,按键的字母顺序(默认为False)
  • **kw: 其他关键字参数,如skipkeys, ensure_ascii, check_circular, allow_nan, separators, default
示例

下面是几个示例展示了如何使用json.dumps()方法:

示例1:将Python对象转换为JSON字符串
import json

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

json_str = json.dumps(data)
print(json_str)

输出结果:

{"name": "John", "age": 30, "city": "New York"}
示例2:格式化输出JSON字符串
import json

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

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

输出结果:

{
    "name": "John",
    "age": 30,
    "city": "New York"
}
示例3:自定义编码器
import json

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

def person_encoder(obj):
    if isinstance(obj, Person):
        return {'name': obj.name, 'age': obj.age}
    raise TypeError(f"Object of type '{obj.__class__.__name__}' is not JSON serializable")

person = Person('John', 30)

json_str = json.dumps(person, default=person_encoder)
print(json_str)

输出结果:

{"name": "John", "age": 30}
注意事项
  • json.dumps()方法默认将非ASCII字符转义为Unicode转义序列。如果要保留非ASCII字符的原始形式,可以将ensure_ascii参数设置为False。
  • 如果要格式化输出JSON字符串,可以使用indent参数指定缩进的空白字符数。
  • 对于自定义的对象,可以通过定义一个自定义的编码器(encoder)来将其转换为JSON格式。使用default参数指定编码器函数。
  • 对于无法处理的数据类型,json.dumps()方法会抛出TypeError异常。可以通过定义一个自定义的编码器,并使用default参数来处理这些类型。

json.dumps()方法是Python中处理JSON数据的重要工具之一。它提供了许多选项可以用于定制化JSON的生成方式。通过适当地使用这些选项,开发人员可以更好地控制JSON数据的生成过程。