python模块之json
json的意义:
- 把你的内存数据通过网络共享给远程其他人
- 定义了不同语言之间的交互规则
- 简单、可读性好。纯文本不能共享复杂的数据类型,xml空间大。
代码示例:
import json data = { 'roles': [ {'role': 'monster', 'type': 'pig', 'life': 50}, {'role': 'hero', 'type': '关羽', 'life': 80}, ] } # dump & dumps with open('test.json', 'w') as f: d = json.dump(data, f) # dump不止转换成字符串,还能存到文件里,后面需要写文件对象 d = json.dumps(data) # 仅仅转成字符串 # load & loads d2 = json.loads(d) print(d2['roles']) # 把字符串转成相应的字符类型 with open('test.json', 'r') as f: data = json.load(f) print(data) # 加载对象需要是文件 # dump多次 d = {'name': 'alex', 'age': 22} l = [1, 2, 3, 4, 'rain'] with open('json_file', 'w', encoding='utf-8') as f: json.dump(d, f) json.dump(l, f) # load 多次 with open('json_file', 'r', encoding='utf-8') as f: json.load(f) # json.decoder.JSONDecodeError: Extra data: line 1 column 28 (char 27) # 结论:为了避免各种问题,python3里面的load不支持dump了多次的文件,虽然python2支持,但是也不建议dump多次,因为容易出问题,比如忘记了自己dump了多少次