python模块之json

json的意义:

  1. 把你的内存数据通过网络共享给远程其他人
  2. 定义了不同语言之间的交互规则
  3. 简单、可读性好。纯文本不能共享复杂的数据类型,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了多少次

 

posted @ 2018-11-22 19:22  梁少华  阅读(227)  评论(0编辑  收藏  举报