以下是 “Python对象与json数据的转换问题实例详解”的完整实例教程:
什么是JSON
JavaScript Object Notation(JSON)是一种轻量级的数据交换格式,易于人类阅读和编写,同时也易于机器进行解析和生成。JSON是JavaScript的一个标准,但是它并不仅限于JavaScript,也可以使用其他编程语言进行编写和解析。
JSON是由键值对组成的数据集合,可以嵌套,它的常用数据类型有字符串、数字、布尔、数组、对象和null。
Python中的Json模块
Python中的json模块可以轻松地进行Python数据类型和JSON数据之间的转换。json模块提供了两个方法:dumps()和loads(),分别用于将Python对象编码成JSON格式字符串和将JSON格式字符串解码为Python对象。
dumps()方法
函数原型为: 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)
示例1:Python字典对象转为JSON格式字符串。
import json
dict_obj = {'name':'John', 'age':25, 'gender':'male'}
json_str = json.dumps(dict_obj)
print(json_str)
输出结果为:
{"name": "John", "age": 25, "gender": "male"}
在这个示例中,Python中的字典对象被转换为了一个JSON格式字符串,并且在输出结果中,键不包含引号,值的类型被转换为了JSON中对应的类型。
示例2:将Python对象转换为JSON格式字符串,加入了缩进和中文的处理
import json
dict_obj = {'name':'约翰', 'age':25, 'gender':'male'}
json_str = json.dumps(dict_obj, separators=(',', ':'), ensure_ascii=False, indent=4)
print(json_str)
输出结果为:
{
"name": "约翰",
"age": 25,
"gender": "male"
}
在这个示例中,将Python对象转为JSON格式字符串,通过ensure_ascii设置为False,将对象中的中文转为了对应的unicode编码,而且通过indent设置为4,对字符串进行了缩进,提高可读性。
loads()方法
函数原型为: json.loads(s, , cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, *kw)
示例3: 将JSON格式字符串转换为Python对象
import json
json_str = '{"name": "Tom", "age": 11, "gender": "unknow", "hobby": ["music", "reading"], "parents": {"father": "Jerry", "mother": "Lucy"}}'
py_dict = json.loads(json_str)
print(py_dict)
print(type(py_dict))
输出结果为:
{'name': 'Tom', 'age': 11, 'gender': 'unknow', 'hobby': ['music', 'reading'], 'parents': {'father': 'Jerry', 'mother': 'Lucy'}}
<class 'dict'>
在这个示例中,将JSON格式字符串转为Python对象,在输出结果中,Python对象的类型改为字典,值的类型也被转换为对应的数据类型。
总结
在Python中,我们可以使用json模块进行Python对象和JSON数据的相互转换。使用dumps()方法将Python对象转换为JSON格式字符串,使用loads()方法将JSON格式字符串转为Python对象。在将Python对象转换为JSON数据时,使用不同的参数可以实现不同的转换结果,指定缩进和中文的处理可以提高JSON数据可读性。