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代码块执行完时,内容会自动关闭并释放文件资源。
知识点补充:
数据类型对照表
python数据
json数据
dict
object
list, tuple
array
str, unicode
string
int, long, float
number
True
true
False
false
None
null
单引号(')
双引号(")
python,json包
更新日志
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]