python中json与str转换和出现KeyError的解决方法

本文详细介绍了Python中JSON数据与字符串之间的转换方法,包括如何使用json.dumps和json.loads函数,以及如何处理在字典操作中常见的KeyError异常。提供了多种KeyError的解决方案,确保代码的健壮性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python中json与str转换和出现KeyError的解决方法

json转str

json格式的数据其实就是dict类型的数据,如图所示:
在这里插入图片描述
使用json包下的dumps方法把dict类型的数据转化为str类型,如图所示:
在这里插入图片描述
从输出的结果可以看出,中文被转换成了ascii码,点开dump函数可以看到有一个参数ensure_ascii默认为True:
在这里插入图片描述
将ensure_ascii改为False就可以了:
在这里插入图片描述
dump保存数据到文件:
在这里插入图片描述
在终端查看保存的文件,发现格式有点乱,不好看
在这里插入图片描述
通过jq,可以格式化json数据,并且还会高亮显示,如图所示:
安装jq只需要sudo apt-get install jq就可以了。
在这里插入图片描述

str转json

先打开文件读取数据:
在这里插入图片描述
现在获取到的数据就是str类型的,使用loads把它转换成dict类型:
在这里插入图片描述
取json格式里的数据就是按照字典的方式:
在这里插入图片描述

KeyError的解决方法

当我们取的key在dict中不存在时,就会报KeyError的错误,
在这里插入图片描述
你也许会问,我怎么会犯这种错误呢,其实在开发中难免会遇到这种问题,因为当你调用一个接口时,它会根据类型返回不同结构的json数据,你就要避免这种错误,如图:
在这里插入图片描述
上图是调用olami接口返回的数据,可以看出,不同的type,它的json结构也是不同的,key也是不同的。
方法一:通过一些共有的key判断
在这里插入图片描述
方法二:先测试key是否存在,再操作
在这里插入图片描述
在这里插入图片描述
方法三:利用dict内置的get(key[,default])
在这里插入图片描述
当key存在时,返回key对应的值,当key不存在时返回None,也可以自定义返回值:
在这里插入图片描述
方法四:利用dict内置的setdefault(key[,default])
如果key存在,则返回其value;否则插入此key,其value为default,并返回default:
在这里插入图片描述
在这里插入图片描述
方法五:向类dict增加__missing__()
当key不存在时,会转向__missing__()方法处理,而不触发KeyError:
在这里插入图片描述
方法六:利用collections.defaultdict(default_factory)对象
实际上这个是继承自dict,而且实际也是用到的__missing__()方法,其default_factory参数就是向__missing__()方法传递的:
在这里插入图片描述
default_factory还可以是某种数据类型,但是不可以为None:
在这里插入图片描述



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值