python的json dump_python中json.dump和json.dumps的区别

json.dumps (&json.loads): 是对数据的操作; json.dump (&json.load): 也是类似的功能,只是与文件操作结合起来了。

1. json.dumps (&json.loads)

首先json是一种常用的数据格式,它其实也是一种字符串,默认编码是Unicode。 json.dumps: 是将dict转化成 str json.loads: 是将str转化成 dict   值得注意的是再次load回来时,key从int变成了str。 同时在json.dumps时,有一些数据类型是不能被序列化的,例如:set,datatime等。解决方式两种: 1、遇到时转换;

json.dumps(data, default=lambda obj: list(obj) if isinstance(obj, set) else obj)

2、自定义序列化。

import json

from datetime import datetime,date

class CustomerJson(json.JSONEncoder):

def default(self, o):

if isinstance(o,datetime):

return o.strftime('%Y-%m-%d %X')

elif isinstance(o,date):

return o.strftime('%Y-%m-%d')

else:

super().default(self,o)

res = {'c1':datetime.today(),'c2':date.today()}

print(json.dumps(res,cls=CustomerJson))

2. json.dumps (&json.loads)

with  open('data.json', 'w') as f:  #将data数据以json的格式写入文件中。

json.dump(data, f)# Reading data back

with open('data.json', 'r') as f:  #从json文件中读取数据

data= json.load(f)

值得一提的是json.dump的参数(json.dump基本相同),上面例子也有用到过,具体可以在需要时查询。我想分享的是参数indent,它表示的是json中的缩进,可以设为2或者4。这样的好处在于,当我们用IDE打开json时,如果是没有缩进,数据是一行,打开比较慢。而又缩进可以加快IDE对它的解析速度。当然如果文件比较小的话,速度上看不出什么区别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值