jsonpath
jsonpath 用于多层嵌套 json格式的 解析。
pip install jsonpath
JsonPath | 描述 |
---|---|
$ | 根节点 |
@ | 现行节点 |
.or[] | 取子节点 |
n/a | 取父节点,jsonpath为支持 |
.. | 就是不管位置,选择所有复合条件的条件 |
* | 匹配所有元素节点 |
n/a | 根据属性访问,json不支持,因为json是个key-value递归结构,不需要数属性访问 |
[] | 迭代器标示(可以在里边做简单的迭代操作,如数组下标,根据内容选值等) |
[,] | 支持迭代器中做多选 |
?() | 支持过滤操作 |
() | 支持表达式计算 |
n/a | 分组,JsonPath不支持 |
jsonpath使用示例
book_dict = { "store": { "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 } } }
JsonPath | Result |
---|---|
$.store.book[*].author | store中的所有的book作者 |
$…author | 所有的作者 |
$.store.* | store下的所有元素 |
$.store…price | store中的所有价钱 |
$…book[2] | 第三本书 |
$…book[(@.length-1)] | 最后一本书 |
$…book[0,1] | 取前两本书 |
$…book[?(@.isbn)] | 获取有jsbn的所有数 |
$…book[?(@.price<10)] | 获取价格大于10 |
$…* | 匹配所有数据 |
使用示例
$ 是查找的根节点,传参数是python的dict 类型,当查找到的时候返回一个list结果,查找失败的时候返回 False.
import jsonpath result = { "code": 0, "data": [ { "age": 20, "create_time": "2019-09-15", "id": 1, "mail": "283340479@qq.com", "name": "yoyo", "sex": "M" }, { "age": 21, "create_time": "2019-09-16", "id": 2, "mail": "123445@qq.com", "name": "yoyo111", "sex": "M" } ], "msg": "success!" } msg = jsonpath.jsonpath(result, '$.msg') print(msg) # 输出结果 ['success!'] names = jsonpath.jsonpath(result, '$..name') print(names) # 输出结果 ['yoyo', 'yoyo111'] no = jsonpath.jsonpath(result, '$..yoyo') print(no) # 找不到是结果是 False
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍Java switch使用原理及实例解析,包括了Java switch使用原理及实例解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Java switch使用及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 java中有两个经常用于条件判断的方法,一个是if{}else{},另一个就是switch()了。总的
本文向大家介绍JAVA8 的StringJoiner 使用及原理解析,包括了JAVA8 的StringJoiner 使用及原理解析的使用技巧和注意事项,需要的朋友参考一下 前几天偶然看到jdk1.8突然新增了一个类StringJoiner , 就研究了一下是怎么使用的, 以及看了下它的源码. 使用如下: //我们先看下他的构造方法: 如果只有中间的一个分割字符, 则其左边和右边的字符都是空, a
本文向大家介绍python解释器spython使用及原理解析,包括了python解释器spython使用及原理解析的使用技巧和注意事项,需要的朋友参考一下 简介 出于个人爱好和某种需求,我再16年对python的解释器产生了浓厚兴趣,并且下定决心重新实现一个版本。我个人再游戏服务器开发中,对c++嵌入lua和python都有着丰富应用经验,自认为对二者的优劣有着深刻的理解。 python针对lua
本文向大家介绍Python中使用gflags实例及原理解析,包括了Python中使用gflags实例及原理解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Python中使用gflags实例及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 安装命令pip install python-gflags 使用示例: gflags使
本文向大家介绍Javascript Symbol原理及使用方法解析,包括了Javascript Symbol原理及使用方法解析的使用技巧和注意事项,需要的朋友参考一下 Symbol是ES6中新引入的一种基本数据类型,在此之前JavaScript中已有几种基本数据类型: Numberg String Boolean Null Undefined Object 不同于其他基本类型的通俗易懂,Symbo
本文向大家介绍FFRPC应用 Client/Server使用及原理解析,包括了FFRPC应用 Client/Server使用及原理解析的使用技巧和注意事项,需要的朋友参考一下 摘要: Ffrpc 进行了重构,精简了代码,代码更加清晰简洁,几乎完美的达到了我的预想。接下来将写几遍文章来介绍ffrpc可以做什么。简单总结ffrpc的特性是: Ffrpc是c++ 网络通信库 全异步 + 回调函数 机制