三JSONPath用法
1 JSONPath简介1.1 概述
XML精彩强调的优点是提供了大量的工具来分析、转换和有选择地从XML文档中提取数据。Xpath是这些功能强大的工具之一。
对于JSON数据来说,是否应该出现jsonpath这样的工具来解决这个问题。
数据可以通过交互方式从客户端上的JSON结构提取,不需要特殊的脚本。|
客户端请求的JSON数据可以减少到服务器的上的相关部分,从而大幅度减少服务器响应的带宽使用。
jsonpath表达式始终引用JSON结构的方式与Xpath表达式与XML文档使用的方式相同。 1.2 官网
https://github.com/dchester/jsonpath 1.3 在线编辑器
http://jsonpath.com/ 二、JSONPath用法
JsonPath表达式总是以与XPath表达式结合使用XML文档相同的方式引用JSON结构。
JsonPath中的"根成员对象"始终称为$,无论是对象还是数组。
JsonPath表达式可以使用点表示法
$.store.book [0].title
或括号表示法
$[‘store’][‘book’][0][‘title’] 2.1 操作符
操作
说明
$
查询根元素。这将启动所有路径表达式。
@
当前节点由过滤谓词处理。
*
通配符,必要时可用任何地方的名称或数字。
..
深层扫描。 必要时在任何地方可以使用名称。
.
点,表示子节点
[‘’ (, ‘’)]
括号表示子项
[ (, )]
数组索引或索引
[start:end]
数组切片操作
[?()]
过滤表达式。 表达式必须求值为一个布尔值。 2.2 函数
函数可以在路径的尾部调用,函数的输出是路径表达式的输出,该函数的输出是由函数本身所决定的。
函数
描述
输出
min()
提供数字数组的最小值
Double
max()
提供数字数组的最大值
Double
avg()
提供数字数组的平均值
Double
stddev()
提供数字数组的标准偏差值
Double
length()
提供数组的长度
Integer 2.3 过滤器运算符
过滤器是用于筛选数组的逻辑表达式。一个典型的过滤器将是[?(@.age > 18)],其中@表示正在处理的当前项目。 可以使用逻辑运算符 && 和 || 创建更复杂的过滤器。 字符串文字必须用单引号或双引号括起来([?(@.color ‘blue’)] 或者 [?(@.color "blue")]).
操作符
描述
==
left等于right(注意1不等于’1’)
!=
不等于
<
小于
<=
小于等于
>
大于
>=
大于等于
=~
匹配正则表达式[?(@.name =~ /foo.*?/i)]
in
左边存在于右边 [?(@.size in [‘S’, ‘M’])]
nin
左边不存在于右边
size
(数组或字符串)长度
empty
(数组或字符串)为空 2.4 示例{ "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 } }, "expensive": 10 }
JsonPath路径
结果
$.store.book[*].author
获取json中store下book下的所有author值
$..author
获取所有json中所有author的值
$.store.*
所有的东西,书籍和自行车都有
$.store..price
获取json中store下所有price的值
$..book[2]
获取json中book数组的第3个值
$..book[-2]
倒数第二本书
$..book[0,1]
前两本书
$..book[:2]
从索引0(包括)到索引2(排除)的所有图书
$..book[1:2]
从索引1(包括)到索引2(排除)的所有图书
$..book[-2:]
获取json中book数组的最后两个值
$..book[2:]
获取json中book数组的第3个到最后一个的区间值
$..book[?(@.isbn)]
获取json中book数组中包含isbn的所有值
$.store.book[?(@.price < 10)]
获取json中book数组中price<10的所有值
$..book[?(@.price <= $[‘expensive’])]
获取json中book数组中price<=expensive的所有值
$..book[?(@.author =~ /.*REES/i)]
获取json中book数组中的作者以REES结尾的所有值(REES不区分大小写)
$..*
逐层列出json中的所有值,层级由外到内
$..book.length()
获取json中book数组的长度
戚薇的脸刘亦菲的腿,打了多少滤镜女明星的脸不得不说,最近的电视剧属实有些离谱!就拿万茜和刘敏涛主演的女士的品格来说吧,这滤镜打的,皮都快磨没了。好家伙!直接亮瞎了我的双眼。换了个浏览器看,结果,还是这样。什么该有的颧骨鼻梁
46岁曾黎和45岁马雅舒同框,只差一岁,一个高贵洋气,一个显土气裙子作为女生日常生活中必不可缺的一件单品,同时也是出席活动时的常用造型之一。不同的版型不同的款式,可以穿出完全不同的气质感。这一点,在明星身上也可见一斑。举个例子,46岁曾黎和45
尤小刚小30岁的三婚妻子真美,穿蕾丝裙时髦,和老公亮相抢尽风头蕾丝是经久不衰的服装元素,利用蕾丝可以塑造出非常丰富的服装造型,一件平淡的衣服增加蕾丝花边或蕾丝花纹,立马变得独特起来。同时,蕾丝还可以表达女性柔美气质,凸显女性韵味,但是如何巧妙
宋慧乔带火了一种风格,叫裙子里面穿长裤,看着时髦又显腿长要说时尚达人们都喜欢的搭配方式的话,叠穿一定名列前茅,将各种看上去简单纯粹的服饰叠加到一起穿搭,呈现出一种意想不到的穿搭效果,打破了大家对于单一服饰的刻板印象。但是,对于普通人来讲
为什么说在学校没见过我,多名高校网友投稿自己妆前妆后对比差最近抖音一个挑战榜火了为什么说在学校买见过我许多网友纷纷挑战发上自己素颜跟妆后的对比,带妆时说在学校没见过我,卸妆后这不就是我身边某某某嘛。极大的反差感让人大吃一惊,不禁惊呼这真的
为什么越来越多人成为敏感肌?最近收到很多姐妹的诉苦很多姐妹都说我用什么都过敏,所以我什么都不敢用,我是敏感肌吗?我脸上经常泛红,又痒又干,这是敏感肌吧?为什么我是敏感肌啊,好痛苦!等等一些反馈大家是不是在想,
今年二月二,最火的发型竟是TA?艾瑞巴蒂二月二已至大家都想好要换什么新发型了咩走在冲浪前线的小奇发现咱飙人可是已经先动起来了(以上图片来源于网络)有一说一大嫂头能够成为姐妹们的开年天菜发型小奇并不意外毕竟这种又御
春暖花开时大气谦和云衡微语大气谦和,人皆悦服。大气之人,端庄厚重,光芒四射大气之人,谦和包容,让人如沐春风。我永远喜欢那些优秀又谦逊的人。摘自老甄絮语春天的眼花缭乱,花花草草长出嫩芽,桃花含苞,油菜
佛陀传递的智慧明知一切成空,为何还要积极度众?佛陀说实无众生可度,但佛陀仍然会积极地度众,为什么?因为,积极的行为可以排除顽空带来的弊端。人一旦陷入顽空,就会变成饱食终日无所事事的动物,整天懒洋洋地,觉得一切都没有意义,一切都
如果有人强行喂你吃垃圾,你能拒绝吗?如今这世道,真是可笑!有人要强行喂你吃屎,你还不能拒绝了。如果你拒绝了,就会有一帮人出来骂你你为什么不吃?要认清现实,这都是为你好!我都吃了,你也必须吃!不吃我抽你!学习是为了中华
天桥上,离别地驭石我曾经在地铁天桥邂逅了一位大哥,他看上去文质彬彬,却总是站在栅栏边,痴痴地望着桥下的车水马龙。我有些担忧,观察过几次之后终于问道我好几次看见您在这儿了,到底在看下面的什么呢?哦