序列化模块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

  

转载于:https://www.cnblogs.com/duanpengpeng/p/9450460.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值