python中的json模块

【参考资料】

https://blog.csdn.net/zhouzhiwengang/article/details/72357608

  • 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON,XML等。
  • 反序列化:就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象。

python从2.6版本开始加入了JSON模块,python的json模块的序列化与反序列化的过程分别是encoding和decoding。

  • encoding:把一个python对象编码转换成Json字符串。
  • decoding:把json格式字符串编码转换成python对象。

json提供四个功能:dumps, dump, loads, load

  • dumps功能 :将数据通过特殊的形式转换为所有程序语言都认识的字符串
>>> import json
>>> data = ['aa', 'bb', 'cc']
>>> json_data = json.dumps(data)
>>> json_data
'["aa", "bb", "cc"]'
  • loads功能 : 将json编码的字符串再转换为python的数据结构
>>> mes = json.loads(json_data)
>>> mes
['aa', 'bb', 'cc']
  • dump功能:将数据通过特殊的形式转换为所有程序语言都认识的字符串,并写入文件
with open('地址.json', 'w') as f:
    json.dump(data, f)
  • load功能:数据文件中读取数据,并将json编码的字符串转换为python的数据结构
with open('地址.json', 'r') as f:
    mes = json.load(f)

json编码支持的基本类型有:None, bool, int, float, string, list, tuple, dict.

对于字典,json会假设key是字符串(字典中的任何非字符串key都会在编码时转换为字符串),要符合JSON规范,应该只对python列表和字典进行编码。此外,在WEB应用中,把最顶层对象定义为字典是一种标准做法。

json编码的格式几乎和python语法一致,略有不同的是:True会被映射为true,False会被映射为false,None会被映射为null,元组()会被映射为列表[],因为其他语言没有元组的概念,只有数组,也就是列表。

['aa', 'bb', 'cc']
>>> import json
>>> data = {'a':True, 'b':False, 'c':None, 'd':(1, 2), 1:'abc'}
>>> json_data = json.dumps(data)
>>> json_data
'{"a": true, "b": false, "c": null, "d": [1, 2], "1": "abc"}'

你可能感兴趣的:(python中的json模块)