Python JSON常用编解码方法代码实例

Python JSON常用编解码方法代码实例

1. JSON简介

JSON(JavaScript Object Notation)是一种轻量级数据交换格式,它以易于阅读和编写的文本格式为基础,被设计为便于人们阅读和编写,同时也便于机器解析和生成。JSON格式是一种适合于AJAX应用程序的数据格式,也是现在大多数Web服务的标准输出格式。

2. 常用模块

Python内置了json模块,实现JSON的编解码,同时也有比json更加快速的第三方模块,例如ujsonsimplejson

3. JSON编码

JSON编码是将Python对象转换为JSON格式的过程。Python内置的json模块提供了两个方法:dumps()dump(),前者将Python对象编码成为json格式的字符串,后者将Python对象写入文件。

下面是一个将Python字典转换为JSON字符串的例子:

import json

dict_data = {"name": "Alice", "age": 20, "sex": "female"}

json_str = json.dumps(dict_data)

print(json_str) # 输出:{"name": "Alice", "age": 20, "sex": "female"}

常用的参数:

sort_keys:为True则按照键排序,为False则不进行排序。

indent:格式化输出,即在每个层级增加几个空格或缩进。

ensure_ascii:默认为True,表示将所有非ASCII字符编码,为False则不编码。

下面是一个例子:

import json

dict_data = {"name": "Alice", "age": 20, "sex": "female"}

json_str = json.dumps(dict_data, sort_keys=True, indent=4, ensure_ascii=False)

print(json_str)

输出:

{

"age": 20,

"name": "Alice",

"sex": "female"

}

4. JSON解码

JSON解码是将JSON对象转换为Python对象的过程,同样也有两个方法:loads()load(),前者将JSON格式的字符串解码为Python对象,后者将文件中JSON格式的字符串读取并解码为Python对象。

下面是一个将JSON字符串解码为Python字典的例子:

import json

json_str = '{"name": "Alice", "age": 20, "sex": "female"}'

dict_data = json.loads(json_str)

print(dict_data) # 输出:{'name': 'Alice', 'age': 20, 'sex': 'female'}

5. JSON与Python对象互相转换

JSON和Python对象之间可以相互转换,转换方法就是通过dumps()loads()实现。

下面是一个将Python对象转换为JSON字符串再解码为Python对象的例子:

import json

dict_data = {"name": "Alice", "age": 20, "sex": "female"}

json_str = json.dumps(dict_data)

dict_data2 = json.loads(json_str)

print(dict_data2) # 输出:{'name': 'Alice', 'age': 20, 'sex': 'female'}

6. 注意事项

在将Python对象编码为JSON格式的字符串时,需要考虑Python对象中包含的数据类型是否能够转换为JSON格式,例如Python的datetime类型无法直接转换为JSON格式,需要先将其转换为字符串或数字类型。

下面是一个例子:

import json

from datetime import datetime

data = {"date": datetime.now()}

# 直接转换会抛出异常

json.dumps(data)

# 先将datetime类型转换为字符串

data["date"] = str(data["date"])

json.dumps(data)

在将JSON格式的字符串解码为Python对象时,也需要保证JSON格式的正确性,否则解码会抛出异常。

7. 总结

JSON是一种轻量级的数据交换格式,易于阅读和编写,也越来越成为Web服务的标准输出格式。Python内置的json模块提供了方便的JSON编解码方法,同时也有第三方扩展模块可以提供更好的性能。

在使用JSON编解码时,需要注意Python对象和JSON格式之间的数据类型转换、格式的正确性等问题。

后端开发标签