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

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

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

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

Json Path介绍

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

JsonPath语法

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

XPath与JsonPath比较

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

示例

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

java中使用

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

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

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

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

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

标签:
  • 热门焦点
  • K60 Pro官方停产 第三方瞬间涨价

    虽然没有官方宣布,但Redmi的一些高管也已经透露了,Redmi K60 Pro已经停产且不会补货,这一切都是为了即将到来的K60 Ultra铺路,属于厂家的正常操作。但有意思的是该机在停产之后
  • 小米平板5 Pro 12.4简评:多专多能 兼顾影音娱乐的大屏利器

    疫情带来了网课,网课盘活了安卓平板,安卓平板市场虽然中途停滞了几年,但好的一点就是停滞的这几年行业又有了新的发展方向,例如超窄边框、高刷新率、多摄镜头组合等,这就让安卓
  • JavaScript 混淆及反混淆代码工具

    介绍在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。什么是混
  • 三言两语说透设计模式的艺术-简单工厂模式

    一、写在前面工厂模式是最常见的一种创建型设计模式,通常说的工厂模式指的是工厂方法模式,是使用频率最高的工厂模式。简单工厂模式又称为静态工厂方法模式,不属于GoF 23种设计
  • 十个简单但很有用的Python装饰器

    装饰器(Decorators)是Python中一种强大而灵活的功能,用于修改或增强函数或类的行为。装饰器本质上是一个函数,它接受另一个函数或类作为参数,并返回一个新的函数或类。它们通常用
  • 多线程开发带来的问题与解决方法

    使用多线程主要会带来以下几个问题:(一)线程安全问题  线程安全问题指的是在某一线程从开始访问到结束访问某一数据期间,该数据被其他的线程所修改,那么对于当前线程而言,该线程
  • 造车两年股价跌六成,小米的估值逻辑变了吗?

    如果从小米官宣造车后的首个交易日起持有小米集团的股票,那么截至2023年上半年最后一个交易日,投资者将浮亏59.16%,同区间的恒生科技指数跌幅为52.78%
  • 2299元起!iQOO Pad开启预售:性能最强天玑平板

    5月23日,iQOO如期举行了新品发布会,除了首发安卓最强旗舰处理器的iQOO Neo8系列新机外,还在发布会上推出了旗下首款平板电脑——iQOO Pad,其搭载了天玑
  • 华为举行春季智慧办公新品发布会 首次推出电子墨水屏平板

    北京时间2月27日晚,华为在巴塞罗那举行春季智慧办公新品发布会,在海外市场推出之前已经在中国市场上市的笔记本、平板、激光打印机等办公产品,并首次推出搭载
Top