序列化模块json模块

json.dumps  将其它数据类型的的数据转换成字符串

json.loads   将字符串类型的其他数据还原

json.dump   将其他数据类型的数据转换成字符串写入文件

json.load    将文件中字符串类型的其他数据读出来后显示原数据类型

 

json模块的限制及使用方法

import json
# json格式的限制1,json格式的key必须是字符串数据类型
# json格式中的字符串只能是""
#
# 如果是数字为key,那么dump之后会强行转成字符串数据类型
dic = {1:2,3:4}
str_dic = json.dumps(dic)
print(str_dic)  #{"1": 2, "3": 4}
new_dic = json.loads(str_dic)
print(new_dic)   #{'1': 2, '3': 4}
#
# json是否支持元组,对元组做value的字典会把元组强制转换成列表
dic = {'abc':(1,2,3)}
str_dic = json.dumps(dic)
print(str_dic)  #{"abc": [1, 2, 3]}
new_dic = json.loads(str_dic)
print(new_dic)   #{'abc': [1, 2, 3]}

# json是否支持元组做key,不支持
dic = {(1,2,3):'abc'}
str_dic = json.dumps(dic)  # 报错
#
# 对列表的dump
lst = ['aaa',123,'bbb',12.456]
with open('json_demo','w') as f:
    json.dump(lst,f)
with open('json_demo') as f:
    ret = json.load(f)
    print(ret)
#
# 能不能多次dump数据到文件里,可以多次dump但是不能load出来了
dic = {'abc':(1,2,3)}
lst = ['aaa',123,'bbb',12.456]
with open('json_demo','w') as f:
    json.dump(lst,f)
    json.dump(dic,f)
with open('json_demo') as f:
    ret = json.load(f)
    print(ret)
#
# 想dump多个数据进入文件,用dumps
dic = {'abc':(1,2,3)}
lst = ['aaa',123,'bbb',12.456]
with open('json_demo','w') as f:
    str_lst = json.dumps(lst)
    str_dic = json.dumps(dic)
    f.write(str_lst+'\n')
    f.write(str_dic+'\n')

with open('json_demo') as f:
    for line in f:
        ret = json.loads(line)
        print(ret)
#
# 中文格式的 ensure_ascii = False
dic = {'abc':(1,2,3),'country':'中国'}
ret = json.dumps(dic,ensure_ascii = False)
print(ret)
dic_new = json.loads(ret)
print(dic_new)

import json

dic = {'abc': "我爱中国"}
with open("xuxi", "w", encoding="utf-8")as f:
    ret = json.dump(dic, f, ensure_ascii=False)
with open("xuxi", encoding="utf-8")as f1:
    ret2 = json.load(f1)
    print(ret2)
# json的其他参数,是为了用户看的更方便,但是会相对浪费存储空间
import json
data = {'username':['李华','二愣子'],'sex':'male','age':16}
json_dic2 = json.dumps(data,sort_keys=True,indent=4,separators=(',',':'),ensure_ascii=False)
print(json_dic2)

# set不能被dump/dumps

  

posted on 2018-08-09 17:35  你们都厉害  阅读(212)  评论(0编辑  收藏  举报