Python: json模块详细教程

用python写了一个程序,用java写了一门程序,这两个程序需要数据之间交流,规定了一种多种语言通用的数据类型,json串

1. 序列化

把对象(变量)从内存中变成可存储或传输的过程称之为序列化

序列化的优点:

  • 持久保存状态:内存是无法永久保存数据的,当程序运行了一段时间,我们断电或者重启程序,内存中关于这个程序的之前一段时间的数据(有结构)都被清空了。但是在断电或重启程序之前将程序当前内存中所有的数据都保存下来(保存到文件中),以便于下次程序执行能够从文件中载入之前的数据,然后继续执行,这就是序列化。
  • 跨平台数据交互:序列化时不仅可以把序列化后的内容写入磁盘,还可以通过网络传输到别的机器上,如果收发的双方约定好实用一种序列化的格式,那么便打破了平台/语言差异化带来的限制,实现了跨平台数据交互。

2.json序列化

Json序列化并不是python独有的,json序列化在java等语言中也会涉及到,因此使用json序列化能够达到跨平台传输数据的目的。

json数据类型和python数据类型对应关系表

Json类型Python类型
{}dict
[]list
“string”str
520.13int或float
true/falseTrue/False
nullNone

3.序列化 反序列化举例

拿字典举例

# 序列化:从python的字典(最常用)变成json串, dump
# 反序列化:从json串变成python的字典(最常用),load

import json

dic = {'a': 1, 'b': 'abc', 'c': None}

data = json.dumps(dic)  # 序列化到内存中
print(data,type(data))  # 单引号全部变成双引号
# {"a": 1, "b": "abc", "c": null} <class 'str'>

data = json.loads(data)  # 从内存中获取json串
print(data,type(data))# 双引号全都变成了单引号
# {'a': 1, 'b': 'abc', 'c': None} <class 'dict'>

with open('test.json','w',encoding='utf8') as fw:# 还可以直接序列化写在文件里
    json.dump(dic,fw)

with open(f'{"test"}.json','r',encoding='utf8') as fr: # 直接从文件里取,进行反序列
    data = json.load(fr)
	print(data)
    # {'a': 1, 'b': 'abc', 'c': None}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值