json主要用来交换文本数据,比如开发网站,后端和前端之间传递数据很多时候都是通过json格式来交换的.
python对json主要就是 写和读,即将内容转换成json和将json读取成python格式
先看写 .python对json的写 一般用dumps和dump 前者是写到变量中,后者是写到文件中.
import jsondict1 ={"a":"test","b":"name","c":25,"d":True,"e":["haha","hehe"],"aa":None} print(dict1) json1 = json.dumps(dict1) print(json1) print(type(json1))#{'a': 'test', 'b': 'name', 'c': 25, 'd': True, 'e': ['haha', 'hehe'], 'aa': None} {"a": "test", "b": "name", "c": 25, "d": true, "e": ["haha", "hehe"], "aa": null} <class 'str'> #切记json格式是一个字符串,不管他长的多像字典还是列表,但是他是一个字符串. #可以看到 dict1这是一个字典 ,但是我们读到json1里以后,josn1是一个字符串.我们直接打印出来和转换成json格式后再打印出来比较一下有什么变化 #1.json都是双引号,而字典是单引号 #2.json的布尔值是小写开头 比如true 而python是大写开头 #3.json的空值是null,而python是None#除了这几点,json和python的字典很像.实际上如果我们将一个列表转换成json,会发现得到的json数据和python的列表也很像.
下面我们看dump和dumps的一些参数 首先是indent
import jsondict1 ={"a":"test","b":"name","c":25,"d":True,"e":["haha","hehe"],"aa":None} json2 = json.dumps(dict1,indent=4) print(json2)''' 加上indent =4 ,则会将json按这样的格式来排序 {"a": "test","b": "name","c": 25,"d": true,"e": ["haha","hehe"],"aa": null } '''
还有一个参数sort_keys
import jsondict1 ={"a":"test","b":"name","c":25,"d":True,"e":["haha","hehe"],"aa":None} json3 = json.dumps(dict1,indent=4,sort_keys=True) print(json3) json.dump(dict1,open("test.json","w")) ''' 加上sort_keys=True 就会将json按key的顺序来排序. {"a": "test","aa": null,"b": "name","c": 25,"d": true,"e": ["haha","hehe"] } '''
而写入到文件dump,参数和dumps一样.
import json json.dump(dict1,open("test.json","w"))#这就在根目录下创建了一个test.json的文件,并且是覆盖写入模式.参数我们就不测试了,总之和dumps一样
下面我们看看怎么读json格式,同样分从文件读 load 和从变量中读 loads
import json #我们先定义一个字符串来模拟json,因为我们知道json都是字符串格式的,注意这个S是一个字符串额,被引号包裹的. s = '{"name": "John", "age": 30, "city": "New York"}' obj = json.loads(s) print(obj) print(type(obj))''' {'name': 'John', 'age': 30, 'city': 'New York'} <class 'dict'> 可以看到格式是字典,证明已经被读取成了字典 '''
从文件读load
import json #我们读刚才dump的那个json文件,模式为只读 obj = json.load(open('test.json',"r")) print(obj) print(type(obj)) #{'a': 'test', 'b': 'name', 'c': 25, 'd': True, 'e': ['haha', 'hehe'], 'aa': None} <class 'dict'> #可以看到 和我们设想的一样,读出来,并且是字典格式的.
json大概就先研究这么多,如果还有更深的再补充,暂时够用了应该