Python基础:json序列化与反序列化

json库常用有4个方法,分别是 dump、dumps、load、loads。
其中 dump和 dumps是用来把字典和数组转换为 json格式的,dump把转换结果直接写入文件,dumps返回字符串。
load和 loads是把 json格式的数据转换为字典格式,load直接从 json文件中读取数据并返回字典对象,loads把字符串形式的 json数据转换成字典格式。

'''json的序列化与反序列化

json格式的字符串类型
json序列化:把python的数据类型转换为json的字符串
json反序列化:把json的字符串转换为python的数据类型

'''

'''字典的序列化与反序列化'''
# 字典的序列化
import json
dict1 = {'name': 'AI', 'age': 18, 'address': 'beijing'}    # 注意:字典类型中,键值都是单引号,而json格式,是双引号
new = json.dumps(dict1)
print(new, type(new))

# 运行结果如下:
# {"name": "AI", "age": 18, "address": "beijing"} <class 'str'>

# 字典的反序列化
newdict = json.loads(new)
print(newdict, type(newdict))

# 运行结果如下:
# {'name': 'AI', 'age': 18, 'address': 'beijing'} <class 'dict'>

'''列表的序列化与反序列化'''
# 列表的序列化
list1 = ["aa", "bb", "cc"]
list_str = json.dumps(list1)
print(list_str, type(list_str))

# 运行结果如下:
# ["aa", "bb", "cc"] <class 'str'>

# 列表的反序列化
newlist = json.loads(list_str)
print(newlist, type(newlist))

# 运行结果如下:
# ['aa', 'bb', 'cc'] <class 'list'>

'''元组的序列化与反序列化'''
# 元组的序列化
tuple1 = ("aaa", "bbb", "ccc")
tuple_str = json.dumps(tuple1)
print(tuple_str, type(tuple_str))

# 运行结果如下:
# ["aaa", "bbb", "ccc"] <class 'str'>

# 元组的反序列化
newtuple = json.loads(tuple_str)
print(newtuple, type(newtuple))

# 运行结果如下:
# ['aaa', 'bbb', 'ccc'] <class 'list'>          # 此处需要注意:元组的反序列化结果类型是列表,而非元组

'''文件的序列化与反序列化: 此过程也可理解为,文件序列化是把内容写进json文件中,读取的时候进行反序列化'''

import json
accounts={10: {'name': 'AI', 'age': 18, 'address': 'beijing'}}   # 原始数据


def json_file():
    with open('info.json', 'w') as f1:
        f1.write(json.dumps(accounts))       # 写入时对文件进行序列化

    with open('info.json', 'r') as f2:
        type_json = json.load(f2)            # 读取时对文件进行反序列化
        print("反序列化后的内容:", type_json, "类型:", type(type_json))

    type_json['sex'] = 'boy'                 # 对文件内容进行更改
    json.dump(type_json, open('info.json', 'w'))         # 修改后的内容写入到json格式的文件中


if __name__ == '__main__':
    json_file()

# 查看json文件内容显示如下:
# {"10": {"name": "AI", "age": 18, "address": "beijing"}, "sex": "boy"}
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值