JSON是一种独立于语言的文本格式,用于数据交换,可以在不同语言间交换数据。
在高级版本的Python里自带json模块包,使用import json直接导入模块。
JSON文本以“键/值”对形式定义,Python里的json模块主要用于“Python数据与JSON格式的数据间相互转换”。
JSON的数据类型:数字(整数或浮点数),字符串(“ ”),逻辑值(True/False),数组([ ]),对象({ }),null。
json模块里常用的四个方法是dump,dumps,load,loads。详细的方法使用细节参考Python自带帮助文件help(json.dump)。
Encode编码为json对象:
json.dumps
Pyhton的Json模块提供了把内存中的对象序列化的方法。
dump的功能就是把Python对象encode为json对象,一个编码过程。 注意json模块提供了json.dumps和json.dump方法,区别是dump直接到文件,而dumps到一个字符串,这里的s可以理解为string。
#dumps方法 import json data = [{ 'a':'A', 'b':(2, 4), 'c':3.0 }] print('DATA:', repr(data), type(data)) data_string = json.dumps(data) print('JSON:', data_string, type(data_string))
json.dump
不仅可以把Python对象编码为string,还可以写入文件。
但是不能把Python对象直接写入文件,这样会报错TypeError: expected a string or other character buffer object,需要将其序列化之后才可以写入文件。
#dump方法 import json data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ] with open('output.json','w') as fp: json.dump(data,fp)
Decode解码为Python对象:
json.loads
以上给出了Python内置对象dump为json对象的操作,反过来,那如何从json对象decode解码为Python可以识别的对象呢?
用loads方法,当然这个是基于string的;如果是文件,可以用json.load方法。
#loads方法 decoded_json = json.loads(data_string) print(type(decoded_json),decoded_json)
json.load
#load方法 with open('output.json') as fp: print(type(fp)) loaded_json = json.load(fp) print(type(loaded_json),loaded_json)
Python里open(‘文件路径’,‘读写模式’)内建函数,作用是打开文件。
利用with代码块操作,便于管理上下文,当with代码块执行完时,内容会自动关闭并释放文件资源。