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

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

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

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

Json Path介绍

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

JsonPath语法

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

XPath与JsonPath比较

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

示例

下面是相应的JsonPath的示例,代码来源于https://goessner/articles/JsonPath/,JSON文档如下:knz28资讯网——每日最新资讯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		}	}}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

java中使用

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

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

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

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

但以上方式仅仅适用于解析一次json的情况,如果需要对同一个json解析多次,不建议使用,因为每次read都会重新解析一次json,针对此种情况,建议使用ReadContext、WriteContext,例如:knz28资讯网——每日最新资讯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详解)

标签:
  • 热门焦点
  • 俄罗斯:将审查iPhone等外国公司设备 保数据安全

    iPhone和特斯拉都属于在各自领域领头羊的品牌,推出的产品也也都是数一数二的,但对于一些国家而言,它们的产品可靠性和安全性还是在限制范围内。近日,俄罗斯联邦通信、信息技术
  • 5月iOS设备性能榜:M1 M2依旧是榜单前五

    和上个月一样,没有新品发布的iOS设备性能榜的上榜设备并没有什么更替,仅仅只有跑分变化而产生的排名变动,刚刚开始的苹果WWDC2023,推出的产品也依旧是新款Mac Pro、新款Mac Stu
  • 线程通讯的三种方法!通俗易懂

    线程通信是指多个线程之间通过某种机制进行协调和交互,例如,线程等待和通知机制就是线程通讯的主要手段之一。 在 Java 中,线程等待和通知的实现手段有以下几种方式:Object 类下
  • 从 Pulsar Client 的原理到它的监控面板

    背景前段时间业务团队偶尔会碰到一些 Pulsar 使用的问题,比如消息阻塞不消费了、生产者消息发送缓慢等各种问题。虽然我们有个监控页面可以根据 topic 维度查看他的发送状态,
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • 破圈是B站头上的紧箍咒

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之每年的暑期档都少不了瞄准追剧女孩们的古偶剧集,2021年有优酷的《山河令》,2022年有爱奇艺的《苍兰诀》,今年却轮到小破站抓住了追
  • 3699元!iQOO Neo8 Pro顶配版今日首销:1TB UFS 4.0同价位唯一

    5月23日,iQOO推出了全新的iQOO Neo8系列,包含iQOO Neo8和iQOO Neo8 Pro两个版本,其中标准版搭载高通骁龙8+,而Pro版更是首发搭载了联发科天玑9200+旗舰
  • 机构称Q2全球智能手机出货量同比下滑11% 苹果份额依旧第2

    7月20日消息,据外媒报道,研究机构的报告显示,由于需求下滑,今年二季度全球智能手机的出货量,同比下滑了11%,三星、苹果等主要厂商的销量,较去年同期均有下
  • onebot M24巧系列一体机采用轻薄机身设计,现已在各平台开售

    onebot M24 巧系列一体机目前已在线上线下各平台同步开售。onebot M24 巧系列采用一体化轻薄机身设计,最薄处为 10.15mm,拥有宝石红、午夜蓝、石墨绿、雅致
Top