字典和列表是 Python的两种数据类型,也是用来处理JSON的完美工具。本文将主要分享以下内容:

  • 如何载入、编写JSON?
  • 如何在命令行上优化、校验JSON?
  • 如何通过使用JMESPath对JSON文档执行高级查询?

1. JSON解码

Python自带一个功能强大、内容丰富的JSON库。可通过以下方式导入:

import json 

解码JSON字符串很简单,直接输入 json.loads(…) 即可。它可以转换成:

  • 字典对象
  • 列表数组
  • 识别布尔值、整数、浮点数和字符串,在Python中进行正确转换。
  • 任何 null 都将被转换为Python的None类型。

以下为json.loads 的一个实例:

    >>> import json >>> jsonstring = '{"name": "erik","age": 38, "married": true}' >>> json.loads(jsonstring){'name': 'erik', 'age': 38, 'married': True} 

2. JSON编码

编码JSON也很简单。使用json.dumps(…) 把由字典、列表和其他本机类型组成的Python对象转换为字符串:

    >>> myjson = {'name': 'erik', 'age': 38, 'married': True} >>> json.dumps(myjson)'{"name": "erik", "age": 38, "married":true}' 

这其实是一个完全相同的文档,只是被转换成了字符串。所以,要想让JSON文档更易读,可使用缩进选项:

    >>> print(json.dumps(myjson, indent=2)) { "name": "erik", "age": 38, "married": true } 

3. 命令行用法

JSON库也可从命令行使用,以校验、优化JSON:

    $ echo "{ "name": "Monty", "age":45 }" |  python3 -m json.tool { "name": "Monty", "age": 45 } 

如果你的电脑系统是Mac或Linux,并且能够安装JSON库的话,那么你也可以研究一下jq 命令行工具。它除了有便于记忆,可以润色代码等优点外,还有许多其他特点。

jq将在默认情况下优化JSON

4. 使用JMESPath搜索JSON

JMESPath是一种JSON查询语言。它能够让你轻松地从JSON文档中获取所需数据。如果你用过JSON,就会觉得获取嵌套值并不难。

例:doc["person"]["age"]将在一个如下所示的文档中获取age的嵌套值:

    { "persons": { "name": "erik", "age": "38" }} 

但如果是像下面这样的文档,该如何从这一组人名中提取所有年龄字段呢?

    { "persons": [ { "name": "erik","age": 38 }, { "name": "john","age": 45 }, { "name": "rob","age": 14 } ]} 

我们可以简单地写一套关于这些人名的重复指令。虽然很容易,但重复指令运行较慢,会使你的代码复杂化。所以,这就该派JMESPath上场了!

用JMESPath表达式编写代码:

persons[*].age

它将返回一个包含所有年龄的数组:[38, 45, 14].

假设要筛选列表,只获取名为“erik”的人的年龄。你可以编写一个筛选程序来执行此操作:

persons[?name=='erik'].age 

看,多么流畅!

因为JMESPath不属于Python标准库,所以你需要一起安装pip或pipenv。例如,在虚拟环境中使用pip:

$ 

现在就去试一试吧!请严格按照交互式教程操作,同时也不要忘了在JMESPath站点上查看示例哦!

本文转载原文链接:4个小窍门,让你在Python中高效使用JSON - 51CTO.COM

python json操作_4个小窍门,让你在Python中高效使用JSON相关推荐

  1. python项目实例初学者-经典Python案例,初学者的小帮手,立马学会Python!

    原标题:经典Python案例,初学者的小帮手,立马学会Python! 对于刚开始学习Python的人来说,会通过Python的一些经典案例练手,这样既可以加深对Python的理解,也可以增进自己的技术 ...

  2. jq处理返回来json_4个小窍门,让你在Python中高效使用JSON

    全文共1990字,预计学习时长5分钟 图源:unsplash 字典和列表是 Python的两种数据类型,也是用来处理JSON的完美工具.本文将主要分享以下内容: · 如何载入.编写JSON? · 如何 ...

  3. python 获取json中最大值_Python中高效使用JSON的四个小窍门

    字典和列表是Python的两种数据类型,也是用来处理JSON的完美工具.本文将主要分享以下内容: ·如何载入.编写JSON? ·如何在命令行上优化.校验JSON? ·如何通过使用JMESPath对JS ...

  4. Python零基础速成班-第8讲-Python文件操作File IO、高级文件处理模块shutil、CSV、JSON、多线程基础

    Python零基础速成班-第8讲-Python文件操作File I&O.高级文件处理模块shutil.CSV.JSON.多线程基础 学习目标 文件操作File I/O 高级文件处理模块shut ...

  5. python绘制如下图形、小三角形边长20_在编程中发现数学之美——使用Python小龟绘制多边形...

    在使用数学知识画出很酷的各种图形之前,你需要先学习Python编程语言的基础知识.本文将会带你熟悉以下编程概念:循环.变量.函数.使用小龟模块绘制图像.本文假设你已经安装了Python,如果没有,欢迎 ...

  6. python打开鼠标指定文件夹_学会python文件操作,鼠标好像没用了,学习python第10天...

    电影是人类对未来的向往,在<黑客帝国>中,我们看到了一个数字化的社会,而当你学会python文件操作,你也就离你向往的黑客近一点了,用程序来直接影响电脑上的其他文件,只需要几行代码就搞定. ...

  7. Python趣味|为了追到小姐姐,我用 Python 制作了一个机器人

    阅读文本大概需要 15 分钟. 1 目 标 场 景 最近发现有一个微信好友,我的每一条朋友圈动态,无论什么时候发布,发布的什么内容,点赞列表总有它的身影. 这不禁让我陷入一种沉思,是否我也能做一个机器 ...

  8. python 建筑计算_制图小技巧:巧用Python和ELK瞬间完成总图建筑名称标注

    哎呦,又到了每周一次的制图教室啦.经过前面两次制图教程的分享,相信大家对于白模填色和写实渲染这两种表达方式肯定有了较好的掌握. 那么今天我们就转战制图技巧篇,和童鞋们聊一下总平面图中的建筑名称标注问题 ...

  9. python语言怎么用-这些小游戏是怎么用Python语言制作出来的……

    The best way to learn a programming language is to write a lot of code and read a lot of code. 游戏编程是 ...

最新文章

  1. pip卸载模块/宏包(python)
  2. pynvml 多gpu不能显示
  3. kafka(一)-为什么使用kafka
  4. 安卓与ios都是linux,随便来说两句,安卓、IOS不是那么容易被取代的
  5. maven依赖范围_Maven依赖范围
  6. 模块概念与使用及注意事项
  7. 用户增长 - BG/NBD概率模型预测用户生命周期LTV(二)
  8. node.js(一)基础介绍
  9. java 解码_如何在Java中进行URL解码?
  10. cs231n_2020 作业knn笔记
  11. 一步步的教你安装UChome (UChome 安装教程)
  12. 斐那契波黄金数列MATLAB,广义斐波那契数列的性质及推广
  13. 本周最新文献速递20220306
  14. henauOJ1042(折纸)
  15. 免费的关于法律的英文文献的网址
  16. Android 命名规则
  17. Cadence Allegro如何生成PCB截面图
  18. 算法问题——猎人和狼,一个男人带两个小孩,,一个女人带两个小孩过河问题
  19. python自动化:uiautomation、pyautogui操作会计记账系统(5):财务公开
  20. 6G丨韩国SK电信公司将联手诺基亚爱立信开发6G技术

热门文章

  1. Python并发编程理论篇
  2. Python deque的用法介绍
  3. NLP《词汇表示方法(五)GloVe》
  4. 漫步线性代数二十二——行列式性质
  5. java书籍台湾翻译_《现代专业Javasctript 技术》一书中英文目录,翻译记录下来方便学习用...
  6. c++ inline 以及构造函数
  7. leetcode —— 11. 盛最多水的容器
  8. 吴恩达深度学习 —— 2.14 向量化逻辑回归的梯度输出
  9. excel表中怎么让隐藏的表格中不粘贴内容-制作autohotkey快捷键
  10. Procrustes Analysis(普氏分析)