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

  • json转str
  • str转json
  • 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:



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

  1. python 中关于无法导入自己写的类。解决方法

    python 中关于无法导入自己写的类.解决方法 参考文章: (1)python 中关于无法导入自己写的类.解决方法 (2)https://www.cnblogs.com/jc-home/p/1209 ...

  2. python中json.dumps将中文变成unicode字符的解决办法

    想要将字典内容写入文件中,发现用json.dumps时发现保存到文件中时中文部分变成unicode字符,如图 解决方法: 1.将data格式化成字符串 2.在json.dumps中加ensure_as ...

  3. Python中读取excel文件中长数字变成科学记数法的解决方法

    因为要进行数据处理,涉及到身份证信息这种长数字的数据,excel直接就将长数字都整成科学记数法了,很明显,这样根本不行,于是我们就需要将其转换成字符串完整显示才行,于是我看了我手上的数据中,身份证那一 ...

  4. Python中出现TypeError: ‘int‘ object is not iterable的解决方法

    我在写Python时出现了如下错误,这里做一个笔记 源代码如下: for n in len(name): 其实编译器的意思就是说len(name)是一个数字,而这种写法是迭代的写法,python中的f ...

  5. python中出现[Errno 2] No such file or directory解决方法之一

    在我学习python文件部分的过程中 编写如下代码时: 会出现跳出如下错误 而我在该目录下的确有此文件 我查了很多资料都还是没有解决,最后我斥巨资(15¥)才得以解决,在这里我分享给大家 其实在这里主 ...

  6. Python中 ‘int‘ object is not subscriptable 问题的可能解决方法

    列表中的元素为x=[1,2,3]的时候,我使用了 y=x[0][0] 但是x是一位数组,因此要么是y使用出错,要么是x构造或者添加的方法不对

  7. Python中json模块的load/loads方法实战及参数详解

    文章目录 前言 正文 1. loads方法与load方法的异同 1.1不相同点: 1.2 相同点 1.3 例子 2. 转换成Python对象 3. json.load(s)的参数 3.1 s参数 3. ...

  8. python中xml格式的转换

    文章目录 python中xml格式的转换 1. 基于DOM. 2. 基于ElementTree 使用dicttoxml xmltodict等模块 1.解析xml文件: 2.字典转换为xml文件: 3. ...

  9. 【强烈推荐】Python中JSON的基本使用(超详细)

    Python中JSON的基本使用 1. JSON简介 2. JSON语法规则 3. JSON数据类型 4. JSON对象 5. JSON数组 6. JSON中常用的方法 6.1 json.dumps( ...

最新文章

  1. 【转载】C语言编译全过程
  2. 使用Java基于数据流直接抽取word文本
  3. FreeBSD 6.0架设管理与应用-附录B 制作FreeBSD安装光盘
  4. Java反射实现几种方式
  5. Git pull 错误:fatal: refusing to merge unrelated histories解决办法
  6. twitter mysql_twitter-mysql改进点
  7. POST+JSON+JS下载Excel或CSV
  8. Linux服务器---配置apache支持用户认证
  9. redistemplate 设置永不过期_解决密码已过期,拒绝访问问题
  10. asp.net ashx + JQuery Ajax + XML
  11. 框架分析--框架的类关系图
  12. 装箱问题 vijos
  13. Android ActivityManager常用方法
  14. Unity3D射击小游戏Demo开发
  15. cachecloud java_cachecloud安装部署
  16. 元宇宙GOD新纪元打通元宇宙
  17. 2018年7月中华人民共和国县以上行政区划代码
  18. 工作问题:SQL求解用户复购率
  19. 家庭“好用”优化师:每一件好物都是在积攒生活闪光
  20. α_β_γ_δ_ε_ζ_η_θ_ι_κ_λ_μ_ν怎么读

热门文章

  1. python中chr函数的作用_chr()函数以及Python中的示例
  2. 高级软件工程必做作业2:视频剪辑软件调研
  3. 融云移动办公协同平台,助力政企数智化转型升级
  4. 2012年01月07日
  5. mysqli 预处理详解
  6. Python uWSGI部署服务
  7. python如何忽略烦人的warnings
  8. 为什么要做海外应用市场排名
  9. CVPR 2021 Less is More: CLIP BERT for Video-and-Language Learning via Sparse Sampling
  10. 使用PyPDF4和PIL修改PDF文件中的图片