json.dumps() 方法:将 Python 对象转换为 JSON 字符串
别看那么多参数,一般只需要用标红的三个关键字参数即可
import json
request_json = {'score': 21.2,'name': '张三'}
res = json.dumps(request_json)
print(res)
def 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 | 表示 Python 对象 |
* | 星号本身不是参数。星号表示其后面的参数都是关键字参数,需要使用关键字参数传值,否则程序会出现错误 |
skipkeys | 默认值:False,如果为True,则不是基本对象 (包括str、int、float、bool、None) 的字典的键会被跳过,否则引发一个 TypeError 错误信息 |
ensure_ascii | 默认值为 True,会将所有输入的非 ASCII 字符转义输出,如果值为 False,会将输入的非 ASCII 字符原样输出 |
check_circular | 表示检验循环引用,默认值为 True。如果值为 False,则容器类型的循环引用会被跳过并引发一个 OverflowError 错误 |
allow_nan | 默认值为 True。如果值为 False,那么在对 JSON 规范以外的 float 类型值 (nan、inf 和 -inf) 进行序列化时将会引发一个 ValueError 错误;如果值为 True,则使用它们的 JavaScript 等价形式(NaN、Infinity 和 -Infinity ) |
cls | 默认值为 None。通过该关键字参数可以指定自定义的 JSONEncoder 的子类 |
indent | 默认值为 None。选择最紧凑的表达。如果 indent 是一个非负整数或者字符串,那么 JSON 数组元素和对象成员会被美化输出为该值指定的缩进等级。如果缩进等级为零、负数或者 “”,则只会添加换行符。当 indent 为一个正整数时会让每一层缩进同样数量的空格;如果 indent 是一个字符串如换行符、制表符 ( “\n”、 “\t”) 等,那么这个字符串会被用于每一层 |
separators | 默认值为 None。该参数是一个元组,即:(’,’, ‘: ‘),其中包含空白字符。如果想要得到最紧凑的 JSON 表达式,应指定该参数为:(’,’,’:’),不要空白字符 |
default | 默认值为 None。如果要指定该参数,则该参数应是一个函数。每当某个对象无法被序列化时,它就会被调用。它返回该对象的一个可以被 JSON 编码的版本或者引发一个 TypeError (传入参数的类型错误)。如果不指定该参数,则会直接引发 TypeError |
sort_keys | 默认值为 False。如果值为True,那么字典的输出会以键的顺序排序 |
**kw | 其他关键字参数,用于字典 |
import json
request_json = {'operatorId': 1161818,'score': 21.2,'clientId': '1','isAutoLogin': False,'type': [1,2]}
'''
:param indent : 【默认为 None 】序列化之后,每行数据的缩进字符
:param ensure_ascii : 【默认为 True 】True,输入的非 ASCII 字符转义输出 ; False,非 ASCII 字符原样输出
:param sort_keys : 【默认为 False】True,字典的输出会以键的顺序排序 ; False,根据入参顺序输出
'''
res = json.dumps(request_json,indent=3,ensure_ascii=False,sort_keys=True)
print(res)
>>> 控制台打印输出结果:
C:\Users\user\AppData\Local\Programs\Python\Python36\python.exe D:/pythonProject/test.py
{
"clientId": "1",
"isAutoLogin": false,
"operatorId": 1161818,
"score": 21.2,
"type": [
1,
2
]
}
Process finished with exit code 0