成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JsonPath詳細(xì)使用教程,你了解多少?

開發(fā) 后端
看它的名字你就能知道,這Json Path和JSON文檔有關(guān)系,正如XPath之于XML文檔一樣,JsonPath為Json文檔提供了解析能力,通過使用JsonPath,你可以方便的查找節(jié)點(diǎn)、獲取想要的數(shù)據(jù),JsonPath是Json版的XPath。

Json Path介紹

看它的名字你就能知道,這Json Path和JSON文檔有關(guān)系,正如XPath之于XML文檔一樣,JsonPath為Json文檔提供了解析能力,通過使用JsonPath,你可以方便的查找節(jié)點(diǎn)、獲取想要的數(shù)據(jù),JsonPath是Json版的XPath。

JsonPath語法

  • 表示文檔的根元素
  • 表示文檔的當(dāng)前元素
  • .node_name  ['node_name'] 匹配下級(jí)節(jié)點(diǎn)
  • [index] 檢索數(shù)組中的元素
  • [start:end:step] 支持?jǐn)?shù)組切片語法
  • 作為通配符,匹配所有成員
  • .. 子遞歸通配符,匹配成員的所有子元素
  • (<expr>) 使用表達(dá)式
  • ?(<boolean expr>)進(jìn)行數(shù)據(jù)篩選

XPath與JsonPath比較

XPath

JsonPath

說明

/

$

文檔根元素

.

@

當(dāng)前元素

/

.或[]

匹配下級(jí)元素

..

N/A

匹配上級(jí)元素,JsonPath不支持此操作符

//

..

遞歸匹配所有子元素

*

*

通配符,匹配下級(jí)元素

@

N/A

匹配屬性,JsonPath不支持此操作符

[]

[]

下標(biāo)運(yùn)算符,根據(jù)索引獲取元素,XPath索引從1開始,JsonPath索引從0開始

`

`

[,]

N/A

[start:end:step]

數(shù)據(jù)切片操作,XPath不支持

[]

?()

過濾表達(dá)式

N/A

()

腳本表達(dá)式,使用底層腳本引擎,XPath不支持

()

N/A

分組,JsonPath不支持

示例

下面是相應(yīng)的JsonPath的示例,代碼來源于https://goessner.net/articles/JsonPath/,JSON文檔如下:

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

解析情況如下:

XPath

JsonPath

Result

/store/book/author

$.store.book[*].author

所有book的author節(jié)點(diǎn)

//author

$..author

所有author節(jié)點(diǎn)

/store/*

$.store.*

store下的所有節(jié)點(diǎn),book數(shù)組和bicycle節(jié)點(diǎn)

/store//price

$.store..price

store下的所有price節(jié)點(diǎn)

//book[3]

$..book[2]

匹配第3個(gè)book節(jié)點(diǎn)

//book[last()]

$..book[(@.length-1)],或 $..book[-1:]

匹配倒數(shù)第1個(gè)book節(jié)點(diǎn)

//book[position()<3]

$..book[0,1],或 $..book[:2]

匹配前兩個(gè)book節(jié)點(diǎn)

//book[isbn]

$..book[?(@.isbn)]

過濾含isbn字段的節(jié)點(diǎn)

//book[price<10]

$..book[?(@.price<10)]

過濾price<10的節(jié)點(diǎn)

//*

$..*

遞歸匹配所有子節(jié)點(diǎn)

可以在http://jsonpath.com/站點(diǎn)進(jìn)行驗(yàn)證JsonPath的執(zhí)行效果。

java中使用

pom中引用

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

通常是直接使用靜態(tài)方法API進(jìn)行調(diào)用,例如:

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

但以上方式僅僅適用于解析一次json的情況,如果需要對同一個(gè)json解析多次,不建議使用,因?yàn)槊看蝦ead都會(huì)重新解析一次json,針對此種情況,建議使用ReadContext、WriteContext,例如:

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);
責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2020-03-25 08:47:22

智能邊緣邊緣計(jì)算網(wǎng)絡(luò)

2023-10-25 08:17:06

Lite模式代理類

2023-10-29 08:35:47

AndroidAOP編程

2021-06-06 18:22:04

PprofGopher邏輯

2012-12-27 10:58:24

KVMKVM概念

2023-10-30 07:05:31

2022-06-07 07:37:40

線程進(jìn)程開發(fā)

2023-09-07 10:26:50

接口測試自動(dòng)化測試

2022-02-08 12:06:12

云計(jì)算

2019-08-07 17:18:18

云計(jì)算云原生函數(shù)

2011-08-23 11:03:35

ATM

2025-01-16 10:41:40

2020-12-10 09:00:00

開發(fā).NET工具

2015-11-09 10:44:37

DevOpsIT運(yùn)維

2023-12-24 12:56:36

協(xié)程

2021-12-09 07:47:58

Flink 提交模式

2023-08-17 10:12:04

前端整潔架構(gòu)

2019-08-01 10:44:23

JavaScript框架內(nèi)存

2011-08-10 09:35:38

2021-09-07 18:34:14

混合云架構(gòu)私有云云計(jì)算
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 98久久| 成人影院午夜 | 久久精品亚洲一区二区三区浴池 | 免费视频99 | 国产一区二区三区不卡av | 国产伦精品一区二区三区高清 | 国产一区二区三区高清 | 国产一级淫片a直接免费看 免费a网站 | 欧美极品在线观看 | 欧美色欧美亚洲另类七区 | 欧美成人精品一区二区男人看 | 久久免费看 | 中文字幕免费视频 | 一区二区三区精品 | 天天久久| 亚洲一区二区三区桃乃木香奈 | 正在播放一区二区 | 亚洲一区二区三区免费在线观看 | 亚洲国产午夜 | 亚洲另类春色偷拍在线观看 | 国内精品视频在线 | 影视先锋av资源噜噜 | 四虎在线播放 | 国产电影精品久久 | 色婷婷精品国产一区二区三区 | 中文字幕日韩欧美 | 99国产精品久久久久老师 | 欧美中文字幕一区二区三区 | 亚洲成人免费视频在线观看 | 亚洲日韩中文字幕 | a国产一区二区免费入口 | 国产探花在线精品一区二区 | 国产精品一区二区在线播放 | xxxxx免费视频 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | www.操.com| 国产二区三区 | 国产精品成人一区二区 | 视频在线亚洲 | 亚洲成人中文字幕 | 91精品国产色综合久久不卡98 |