当前位置:首页 > 科技  > 软件

JsonPath详细使用教程,你了解多少?

来源: 责编: 时间:2023-09-18 21:42:13 372观看
导读Json Path介绍看它的名字你就能知道,这Json Path和JSON文档有关系,正如XPath之于XML文档一样,JsonPath为Json文档提供了解析能力,通过使用JsonPath,你可以方便的查找节点、获取想要的数据,JsonPath是Json版的XPath。JsonPat

58r28资讯网——每日最新资讯28at.com

Json Path介绍

看它的名字你就能知道,这Json Path和JSON文档有关系,正如XPath之于XML文档一样,JsonPath为Json文档提供了解析能力,通过使用JsonPath,你可以方便的查找节点、获取想要的数据,JsonPath是Json版的XPath。58r28资讯网——每日最新资讯28at.com

JsonPath语法

  • 表示文档的根元素
  • 表示文档的当前元素
  • .node_name  ['node_name'] 匹配下级节点
  • [index] 检索数组中的元素
  • [start:end:step] 支持数组切片语法
  • 作为通配符,匹配所有成员
  • .. 子递归通配符,匹配成员的所有子元素
  • (<expr>) 使用表达式
  • ?(<boolean expr>)进行数据筛选

XPath与JsonPath比较

XPath58r28资讯网——每日最新资讯28at.com

JsonPath58r28资讯网——每日最新资讯28at.com

说明58r28资讯网——每日最新资讯28at.com

/58r28资讯网——每日最新资讯28at.com

$58r28资讯网——每日最新资讯28at.com

文档根元素58r28资讯网——每日最新资讯28at.com

.58r28资讯网——每日最新资讯28at.com

@58r28资讯网——每日最新资讯28at.com

当前元素58r28资讯网——每日最新资讯28at.com

/58r28资讯网——每日最新资讯28at.com

.或[]58r28资讯网——每日最新资讯28at.com

匹配下级元素58r28资讯网——每日最新资讯28at.com

..58r28资讯网——每日最新资讯28at.com

N/A58r28资讯网——每日最新资讯28at.com

匹配上级元素,JsonPath不支持此操作符58r28资讯网——每日最新资讯28at.com

//58r28资讯网——每日最新资讯28at.com

..58r28资讯网——每日最新资讯28at.com

递归匹配所有子元素58r28资讯网——每日最新资讯28at.com

*58r28资讯网——每日最新资讯28at.com

*58r28资讯网——每日最新资讯28at.com

通配符,匹配下级元素58r28资讯网——每日最新资讯28at.com

@58r28资讯网——每日最新资讯28at.com

N/A58r28资讯网——每日最新资讯28at.com

匹配属性,JsonPath不支持此操作符58r28资讯网——每日最新资讯28at.com

[]58r28资讯网——每日最新资讯28at.com

[]58r28资讯网——每日最新资讯28at.com

下标运算符,根据索引获取元素,XPath索引从1开始,JsonPath索引从0开始58r28资讯网——每日最新资讯28at.com

`58r28资讯网——每日最新资讯28at.com

`58r28资讯网——每日最新资讯28at.com

[,]58r28资讯网——每日最新资讯28at.com

N/A58r28资讯网——每日最新资讯28at.com

[start:end:step]58r28资讯网——每日最新资讯28at.com

数据切片操作,XPath不支持58r28资讯网——每日最新资讯28at.com

[]58r28资讯网——每日最新资讯28at.com

?()58r28资讯网——每日最新资讯28at.com

过滤表达式58r28资讯网——每日最新资讯28at.com

N/A58r28资讯网——每日最新资讯28at.com

()58r28资讯网——每日最新资讯28at.com

脚本表达式,使用底层脚本引擎,XPath不支持58r28资讯网——每日最新资讯28at.com

()58r28资讯网——每日最新资讯28at.com

N/A58r28资讯网——每日最新资讯28at.com

分组,JsonPath不支持58r28资讯网——每日最新资讯28at.com

示例

下面是相应的JsonPath的示例,代码来源于https://goessner/articles/JsonPath/,JSON文档如下:58r28资讯网——每日最新资讯28at.com

{	"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		}	}}

解析情况如下:58r28资讯网——每日最新资讯28at.com

XPath58r28资讯网——每日最新资讯28at.com

JsonPath58r28资讯网——每日最新资讯28at.com

Result58r28资讯网——每日最新资讯28at.com

/store/book/author58r28资讯网——每日最新资讯28at.com

$.store.book[*].author58r28资讯网——每日最新资讯28at.com

所有book的author节点58r28资讯网——每日最新资讯28at.com

//author58r28资讯网——每日最新资讯28at.com

$..author58r28资讯网——每日最新资讯28at.com

所有author节点58r28资讯网——每日最新资讯28at.com

/store/*58r28资讯网——每日最新资讯28at.com

$.store.*58r28资讯网——每日最新资讯28at.com

store下的所有节点,book数组和bicycle节点58r28资讯网——每日最新资讯28at.com

/store//price58r28资讯网——每日最新资讯28at.com

$.store..price58r28资讯网——每日最新资讯28at.com

store下的所有price节点58r28资讯网——每日最新资讯28at.com

//book[3]58r28资讯网——每日最新资讯28at.com

$..book[2]58r28资讯网——每日最新资讯28at.com

匹配第3个book节点58r28资讯网——每日最新资讯28at.com

//book[last()]58r28资讯网——每日最新资讯28at.com

$..book[(@.length-1)],或 $..book[-1:]58r28资讯网——每日最新资讯28at.com

匹配倒数第1个book节点58r28资讯网——每日最新资讯28at.com

//book[position()<3]58r28资讯网——每日最新资讯28at.com

$..book[0,1],或 $..book[:2]58r28资讯网——每日最新资讯28at.com

匹配前两个book节点58r28资讯网——每日最新资讯28at.com

//book[isbn]58r28资讯网——每日最新资讯28at.com

$..book[?(@.isbn)]58r28资讯网——每日最新资讯28at.com

过滤含isbn字段的节点58r28资讯网——每日最新资讯28at.com

//book[price<10]58r28资讯网——每日最新资讯28at.com

$..book[?(@.price<10)]58r28资讯网——每日最新资讯28at.com

过滤price<10的节点58r28资讯网——每日最新资讯28at.com

//*58r28资讯网——每日最新资讯28at.com

$..*58r28资讯网——每日最新资讯28at.com

递归匹配所有子节点58r28资讯网——每日最新资讯28at.com

可以在http://jsonpath.com/站点进行验证JsonPath的执行效果。58r28资讯网——每日最新资讯28at.com

java中使用

pom中引用58r28资讯网——每日最新资讯28at.com

<dependency>            <groupId>com.jayway.jsonpath</groupId>            <artifactId>json-path</artifactId>            <version>2.4.0</version>        </dependency>

通常是直接使用静态方法API进行调用,例如:58r28资讯网——每日最新资讯28at.com

String json = "...";List<String> authors = JsonPath.read(json, "$.store.book[*].author");

但以上方式仅仅适用于解析一次json的情况,如果需要对同一个json解析多次,不建议使用,因为每次read都会重新解析一次json,针对此种情况,建议使用ReadContext、WriteContext,例如:58r28资讯网——每日最新资讯28at.com

String json = "..."; ReadContext ctx = JsonPath.parse(json); List<String> authorsOfBooksWithISBN = ctx.read("$.store.book[?(@.isbn)].author"); List<Map<String, Object>> expensiveBooks = JsonPath                            .using(configuration)                            .parse(json)                            .read("$.store.book[?(@.price > 10)]", List.class);

本文链接:http://www.28at.com/showinfo-26-10484-0.htmlJsonPath详细使用教程,你了解多少?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 零拷贝并非万能解决方案:重新定义数据传输的效率极限

下一篇: Springboot — 用更优雅的方式发HTTP请求(RestTemplate详解)

标签:
  • 热门焦点
  • 对标苹果的灵动岛 华为带来实况窗功能

    继苹果的灵动岛之后,华为也在今天正式推出了“实况窗”功能。据今天鸿蒙OS 4.0的现场演示显示,华为的实况窗可以更高效的展现出实时通知,比如锁屏上就能看到外卖、打车、银行
  • 7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月份的手机市场风平浪静,除了红魔和努比亚带来了两款搭载骁龙8Gen2领先版处理器的新机之外,别的也想不到有什么新品了,这也正常,通常6月7月都是手机厂商修整的时间,进入8月份之
  • Golang 中的 io 包详解:组合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是对Reader和Writer接口的组合,
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • 本地生活这块肥肉,拼多多也想吃一口

    出品/壹览商业 作者/李彦编辑/木鱼拼多多也看上本地生活这块蛋糕了。近期,拼多多在App首页&ldquo;充值中心&rdquo;入口上线了本机生活界面。壹览商业发现,该界面目前主要
  • ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大&ldquo;烤&rdquo;之下的除了众生,还有各大企业发布的ESG报告。ESG是&ldquo;环境保
  • 当家的盒马,加速谋生

    来源 | 价值星球Planet作者 | 归去来自己&ldquo;当家&rdquo;的盒马,开始加速谋生了。据盒马官微消息,盒马计划今年开放生鲜供应链,将其生鲜商品送往食堂。目前,盒马在上海已经与
  • 华为Mate 60系列用上可变灵动岛:正式版体验将会更出色

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • Windows 11发布,微软一改往常对老机型开放的态度

    距离 Windows 11 发布已经过去一周,在过去一周里,很多数码爱好者围绕其对 Android 应用的支持、对老机型的升级问题展开了激烈讨论。与以往不同的是,在这次大
Top