Python自带json模块,它有loads、dumps、load和dump这4个功能,用于Json格式字符串和Python数据类型间进行转换。
一、json.loads()
-
把Json格式字符串解码转换成Python对象
-
Json中的对象和数组类型字符串会转换成Python中的字典和列表
-
示例
In [1]: import json #导入json模块In [2]: json_list_str = \'[1,2,3,4]\' #数组类型json字符串In [3]: json.loads(json_list_str) #返回python列表Out[3]: [1, 2, 3, 4]In [4]: json_dict_str = \'{\"name\":\"张三\",\"age\":30}\'#对象类型json字符串In [5]: json.loads(json_dict_str) #返回Python字典Out[5]: {\'name\': \'张三\', \'age\': 30}
二、json.dumps()
-
实现python类型转化为json字符串
-
Python中的列表或元组会转换成Json数组类型字符串,字典会转化成对象类型字符串
-
示例
In [6]: tuple = (1,2,3,4,5)In [7]: list = [1,2,3,4,5]In [8]: dict = {\"name\":\"张三\",\"age\":30}In [9]: json.dumps(tuple) #python元组会转化成json中数组类型字符串Out[9]: \'[1, 2, 3, 4, 5]\'In [10]: json.dumps(list) #python列表转换成json中数组类型字符串Out[10]: \'[1, 2, 3, 4, 5]\'In [11]: json.dumps(dict) #python字典转换成json对象类型字符串,序列化时默认采用ascii编码Out[11]: \'{\"name\": \"\\\\u5f20\\\\u4e09\", \"age\": 30}\'In [12]: json.dumps(dict,ensure_ascii=False) #将ensure_ascii参数设为False,采用utf-8编码Out[12]: \'{\"name\": \"张三\", \"age\": 30}\'
三、json.dump()
-
将Python内置类型序列化为json对象后写入文件
-
示例
In [13]: python_data = [{\"name\":\"张三\",\"age\":30},{\"name\":\"李四\",\"age\":40}]In [14]: json.dump(python_data,open(\'json_data.json\',\'w\'),ensure_ascii=False) #将python类型数据转换成json类型,并写入文件json_data.jsonIn [15]: with open(\'json_data.json\') as f: #查看写入文件中的json数据...: print(f.read())...:[{\"name\": \"张三\", \"age\": 30}, {\"name\": \"李四\", \"age\": 40}]
四、json.load()
-
读取文件中json形式的字符串,并转化成python类型
-
示例
In [16]: json.load(open(\'json_data.json\')) #读取文件json_data.json中的json字符串,并转换成python中的列表类型Out[16]: [{\'name\': \'张三\', \'age\': 30}, {\'name\': \'李四\', \'age\': 40}]In [17]: type(json.load(open(\'json_data.json\'))) #python中的列表类型Out[17]: list