jsonpath简介

如果有一个多层嵌套的复杂字典,想要根据key批量提取value,还是比较繁琐的。jsonPath模块就能解决这个痛点,接下来我们来学习一下jsonpath模块。

因为jsonpath是第三方模块,想要使用需要安装

pip install jsonpath

jsonpath使用方法

import jsonpath
res=jsonpath.jsonpath(dict_data,'jsonpath语法规则字符串')

根据给定jsonpath语法规则,在dict_data中若能找到对应的数据,则以list类型返回数据,若找不到则返回false。

jsonpath语法规则

jsonpath使用示例

book_dict = {
"book": [
{"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
} from jsonpath import jsonpath # 获取price的所有值
print(jsonpath(book_dict, '$..price')) # 获取book下面所有元素
print(jsonpath(book_dict, "$.book.*")) # 获取book下面所有price的值
print(jsonpath(book_dict, "$.book[*].price"))
print(jsonpath(book_dict, "$.book..price")) # 获取第1本书所有信息
print(jsonpath(book_dict, "$.book[0]")) # 获取第2~3本书所有信息
print(jsonpath(book_dict, "$.book[1:3]")) # 获取最后一本书
print(jsonpath(book_dict, "$.book[(@.length-1)]")) # 获取包含了isbn的所有书
print(jsonpath(book_dict, "$.book[?(@.isbn)]")) # 获取书的价格小于10的书
print(jsonpath(book_dict, "$.book[?(@.price<10)]"))

执行结果

Python_jsonPath模块的使用的更多相关文章

  1. npm 私有模块的管理使用

    你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...

  2. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  3. ES6模块import细节

    写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...

  4. Python标准模块--ContextManager

    1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...

  5. Python标准模块--Unicode

    1 模块简介 Python 3中最大的变化之一就是删除了Unicode类型.在Python 2中,有str类型和unicode类型,例如, Python 2.7.6 (default, Oct 26 ...

  6. Python标准模块--Iterators和Generators

    1 模块简介 当你开始使用Python编程时,你或许已经使用了iterators(迭代器)和generators(生成器),你当时可能并没有意识到.在本篇博文中,我们将会学习迭代器和生成器是什么.当然 ...

  7. 自己实现一个javascript事件模块

    nodejs中的事件模块 nodejs中有一个events模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...

  8. 理解nodejs模块的scope

    描述 原文档地址:https://docs.npmjs.com/misc/scope 所有npm模块都有name,有的模块的name还有scope.scope的命名规则和name差不多,同样不能有ur ...

  9. nodejs模块发布及命令行程序开发

    前置技能 npm工具为nodejs提供了一个模块和管理程序模块依赖的机制,当我们希望把模块贡献出去给他人使用时,可以把我们的程序发布到npm提供的公共仓库中,为了方便模块的管理,npm规定要使用一个叫 ...

随机推荐

  1. Dubbo多注册中心

    一.创建提供者08-provider-registers (1) 创建工程 直接复制05-provider-group工程,并命名为08-provider-registers (2) 修改配置文件 二 ...

  2. 2.9 go mod 之本地仓库搭建

    wikihttps://github.com/golang/go/wiki/Modules#how-to-prepare-for-a-release参考https://blog.csdn.net/be ...

  3. 【Linux】【Web】【HTTP】HTTP,TCP,SSL通讯过程

    1. HTTP 一次完整的http请求处理过程: (1) 建立或处理连接:接收请求或拒绝请求(三次握手): (2) 接收请求:接收来自于网络上的主机请求报文中对某特定资源的一次请求的过程: (3) 处 ...

  4. 使用IDEA整合spring4+spring mvc+hibernate

    配置文件 spring-mvc.xml 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans x ...

  5. [Java Web 王者归来]读书笔记1

    第一章 Java web 开发概述 1 WEB服务器运行时一直在TCP 80(默认端口)监听, 若使用其他端口在url中需要显示标注端口号(例如:8080) 2 WEB服务器:微软的IIS.Apach ...

  6. [BUUCTF]PWN——hitcontraining_heapcreator

    hitcontraining_heapcreator 附件 步骤: 例行检查,64位程序,开启了canary和nx 本地试运行一下,看看大概的情况,经典的堆的菜单 64位ida载入,main函数没有什 ...

  7. [BUUCTF]PWN4——pwn1_sctf_2016

    [BUUCTF]PWN4--pwn1_sctf_2016 题目网址:https://buuoj.cn/challenges#pwn1_sctf_2016 步骤: 例行检查,32位,开启nx(堆栈不可执 ...

  8. w4sp-lab安装

    扯淡 i春秋有个答题活动,苟了个奖品,我选了一本书:<wireshark与metasploit实战指南>,里面有个配套环境,本来看着书上说使用docker搭建的,以为很简单,只需要pull ...

  9. Python pyecharts绘制仪表盘

    一.仪表盘gauge.add方法简介 gauge.add()方法签名 add(name,attr,value, scale_range=none, angle_range=none,**kwargs) ...

  10. Tornadofx学习笔记(4)——IconTextFx开源库,整合5000+个字体图标

    JavaFx中其实也可以直接使用字体图标iconfont的,只需要加载ttf字体文件,之后设置unicode即可,具体可以看我给出的代码 既然JavaFx可以,那么以JavaFx为基础的Tornado ...