python中json.dumps()和json.loads()的用法

1. json.dumps()函数的用法

json.dumps()函数是将Python对象转换为JSON格式的字符串。

1.1 基本用法

当我们想要将Python对象转换为JSON字符串时,可以使用json.dumps()函数。例如,我们有一个包含字典的Python对象:

person = {

"name": "John",

"age": 30,

"city": "New York"

}

我们可以使用json.dumps()将其转换为JSON字符串:

import json

person_json = json.dumps(person)

person_json的结果如下:

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

可以看到,person_json是一个JSON格式的字符串。

1.2 序列化参数

在json.dumps()函数中,我们还可以指定一些参数来控制序列化的过程。

1.2.1 indent参数

通过设置indent参数,我们可以指定JSON字符串中缩进的空格数。这有助于使JSON字符串更易读。使用indent参数的示例如下:

person_json = json.dumps(person, indent=4)

person_json的结果如下:

'{

"name": "John",

"age": 30,

"city": "New York"

}'

可以看到,person_json字符串中的键值对被缩进了4个空格。

1.2.2 separators参数

separators参数允许我们指定分隔符,可以是一个元组,元组的第一个元素是键值对之间的分隔符,第二个元素是键值对内部的分隔符。示例如下:

person_json = json.dumps(person, separators=(",", ":"))

person_json的结果如下:

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

可以看到,person_json字符串中的键值对之间使用逗号分隔,键和值之间使用冒号分隔。

1.2.3 sort_keys参数

如果我们想要将键按字母顺序进行排序,可以设置sort_keys参数为True。示例如下:

person_json = json.dumps(person, sort_keys=True)

person_json的结果如下:

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

可以看到,person_json字符串中的键按字母顺序进行了排序。

2. json.loads()函数的用法

json.loads()函数是将JSON格式的字符串转换为Python对象。

2.1 基本用法

当我们有一个JSON格式的字符串,想要将其转换为Python对象时,可以使用json.loads()函数。例如,我们有一个JSON字符串:

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

我们可以使用json.loads()将其转换为Python对象:

import json

person = json.loads(person_json)

person的结果如下:

{

"name": "John",

"age": 30,

"city": "New York"

}

可以看到,person是一个包含字典的Python对象。

2.2 反序列化参数

在json.loads()函数中,我们可以指定一些参数来控制反序列化的过程。

2.2.1 object_hook参数

object_hook参数是一个可选的函数或者类,用于将解析的JSON对象转换为自定义对象。示例如下:

def custom_object_hook(d):

if "name" in d:

return Person(d["name"], d["age"], d["city"])

return d

person = json.loads(person_json, object_hook=custom_object_hook)

custom_object_hook函数将JSON对象转换为Person对象,Person对象是一个自定义类。

2.2.2 parse_float、parse_int和parse_constant参数

parse_float、parse_int和parse_constant参数分别表示将JSON中的浮点数、整数和常量值(如null、true和false)转换为自定义对象。示例如下:

def custom_parse_float(value):

return Decimal(value)

person = json.loads(person_json, parse_float=custom_parse_float)

custom_parse_float函数将JSON中的浮点数转换为Decimal对象。

3. 示例与总结

通过json.dumps()函数,我们可以将Python对象序列化为JSON字符串。我们可以通过设置一些参数来控制序列化过程,如indent参数来指定缩进空格数,separators参数来指定分隔符,sort_keys参数来排序键。

通过json.loads()函数,我们可以将JSON字符串反序列化为Python对象。我们可以通过设置一些参数来控制反序列化过程,如object_hook参数将JSON对象转换为自定义对象,parse_float参数将JSON中的浮点数转换为自定义对象。

综上所述,json.dumps()和json.loads()函数是在Python中处理JSON数据时非常有用的工具。通过这两个函数,我们可以轻松地在Python对象和JSON字符串之间进行转换。

后端开发标签