0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在Python中高效使用JSON的四种方法

如意 来源:读芯术微信公众号 作者:读芯术微信公众号 2020-09-14 15:17 次阅读

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

如何载入、编写JSON?

如何在命令行上优化、校验JSON?

如何通过使用JMESPath对JSON文档执行高级查询?

1. JSON解码

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

import json

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

字典对象

列表数组

识别布尔值、整数、浮点数和字符串,在Python中进行正确转换。

任何 null 都将被转换为Python的None类型。

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

在Python中高效使用JSON的四种方法

2. JSON编码

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

在Python中高效使用JSON的四种方法

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

在Python中高效使用JSON的四种方法

3. 命令行用法

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

在Python中高效使用JSON的四种方法

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

4. 使用JMESPath搜索JSON

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

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

在Python中高效使用JSON的四种方法

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

在Python中高效使用JSON的四种方法

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

用JMESPath表达式编写代码:

persons[*].age

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

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

persons[?name==‘erik’].age

看,多么流畅!

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

在Python中高效使用JSON的四种方法

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 源代码
    +关注

    关注

    95

    文章

    2929

    浏览量

    66064
  • python
    +关注

    关注

    51

    文章

    4677

    浏览量

    83475
  • JSON
    +关注

    关注

    0

    文章

    111

    浏览量

    6819
收藏 人收藏

    评论

    相关推荐

    FPGA 设计的四种常用思想与技巧

    FPGA 设计的四种常用思想与技巧FPGA设计的四种常用思想与技巧 讨论的四种常用FPGA/CPLD设计思想与技巧:乒乓操作、串并转换、流水线操作、数据接口同步化,都是FPGA/CPLD 逻辑设计
    发表于 08-11 10:30

    PADS封装中的四种

    PADS中有四种库(暂且论是四种),元器件封装库(Decals),元件类型(Part Type),和逻辑封装库(CAE),图形库(Lines)。简明点说他们的关系,CAE是用在画原理图时候用
    发表于 03-06 10:35

    Python字符串的特点和修改字符串的常见四种方法

    Python中修改字符串的几种方法
    发表于 02-26 16:52

    IO口的四种使用方法

    IO口的四种使用方法高阻态的典型应用
    发表于 01-12 07:16

    IO口的四种使用方法

    IO口的四种使用方法高阻态的典型应用
    发表于 02-02 06:58

    IO口的四种使用方法

    IO口的四种使用方法高阻态的典型应用
    发表于 02-19 07:23

    1.3 两运行 Python 程序方法

    界面上执行 Python 语句使用命令行执行 .py 后缀的脚本文件下面分别对这两种方法进行演示。1. 第一种方法首先打开你的终端,直接输入 python3 回车,然后输入 prin
    发表于 02-16 18:31

    python执行函数的九种方法

    = methodcaller("speak", "明哥")p = People()caller(p)以上就是函数执行的九种方法,很多方法,大家也都知道,但是也有几个方法,几乎是见不到的,尤其是后面使用 operator 库的那
    发表于 03-29 17:43

    python判断是否包含子串的7种方法

    ", "lol"))# False5、通过魔法方法第一种方法中,我们使用 in 和 not in 判断一个子串是否存在于另一个字符中,实际上
    发表于 04-08 15:15

    Python 转义字符的5表示方法

    ;> a = u"中">>> au'\u4e2d'由此,要实现 hello + 回车 + world ,就有了第四种方法。# 第四种方法:使用 unicode
    发表于 04-11 15:18

    电路板上二极管型号确定的四种方法

    作为电路板上的二极管可以有四种方法确定它们的型号。
    发表于 04-06 15:48 2.7w次阅读

    python统计词频的三种方法

    python统计词频的三种方法方法
    发表于 05-25 14:33 2次下载

    Python中三个json组件的安装方式

    Python 使用用 json.dumps(data) 时突然发现特别慢,data 本身不大,但是一个包含很多元素的列表,所以促使本人寻找一个替代的 JSON 处理库。大概对比了一个 ujson
    的头像 发表于 09-23 14:35 5693次阅读
    <b class='flag-5'>Python</b>中三个<b class='flag-5'>json</b>组件的安装方式

    四种方法实现LED点亮

    四种方法实现LED点亮程序分享
    发表于 12-28 10:03 3次下载

    如何利用Python和pandas来处理json数据

    在实际工作中,尤其是web数据的传输,我们经常会遇到json数据。它不像常见的文本数据、数值数据那样友好,而且它和Python中的字典类型数据又很相像,给很多人造成了困扰。 本文结合具体案例详细介绍
    的头像 发表于 11-01 10:59 634次阅读
    如何利用<b class='flag-5'>Python</b>和pandas来处理<b class='flag-5'>json</b>数据