python中json模块的使用
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.json In [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