日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

java json path_Java使用JSONPath解析JSON完整内容详解

發(fā)布時間:2024/7/5 javascript 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java json path_Java使用JSONPath解析JSON完整内容详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

JsonPath是一種簡單的方法來提取給定JSON文檔的部分內(nèi)容。 JsonPath有許多編程語言,如Javascript,Python和PHP,Java。

JsonPath提供的json解析非常強大,它提供了類似正則表達式的語法,基本上可以滿足所有你想要獲得的json內(nèi)容。

maven中添加jar包

JsonPath可在Central Maven存儲庫中找到。 Maven用戶將其添加到您的POM。

com.jayway.jsonpath json-path 2.2.0

操作符

操作

說明

$

表示根元素

@

當前元素

. or []

子元素

n/a

父元素

*

通配符,表示所有的元素

. .

選擇所有符合條件的節(jié)點

[]

迭代器標示,如數(shù)組下標

[,]

連接操作符在XPath 結(jié)果合并其它結(jié)點集合。JSONP允許name或者數(shù)組索引。

[start?step]

數(shù)組切片操作

?()

過濾表達式

()

支持表達式計算

函數(shù)

函數(shù)可以在路徑的尾部調(diào)用,函數(shù)的輸出是路徑表達式的輸出,該函數(shù)的輸出是由函數(shù)本身所決定的。

函數(shù)

描述

輸出

min()

提供數(shù)字數(shù)組的最小值

Double

max()

提供數(shù)字數(shù)組的最大值

Double

avg()

提供數(shù)字數(shù)組的平均值

Double

stddev()

提供數(shù)字數(shù)組的標準偏差值

Double

length()

提供數(shù)組的長度

Integer

過濾器運算符

過濾器是用于篩選數(shù)組的邏輯表達式。一個典型的過濾器將是[?(@.age > 18)],其中@表示正在處理的當前項目。 可以使用邏輯運算符&&和||創(chuàng)建更復(fù)雜的過濾器。 字符串文字必須用單引號或雙引號括起來([?(@.color == ‘blue')] 或者 [?(@.color == “blue”)]).

操作符

描述

==

left等于right(注意1不等于'1')

!=

不等于

<

小于

<=

小于等于

>

大于

>=

大于等于

=~

匹配正則表達式[?(@.name =~ /foo.*?/i)]

in

左邊存在于右邊 [?(@.size in [‘S', ‘M'])]

nin

左邊不存在于右邊

size

(數(shù)組或字符串)長度

empty

(數(shù)組或字符串)為空

Java操作示例

json格式的數(shù)據(jù):

{

"text": "張三",

"expensive": 6,

"body": {

"rvNoNum": 23,

"rvNoRecords": [{

"score": 4,

"rvAddress": "2",

"consignments": null

}, {

"score": 8,

"rvAddress": "3",

"consignments": null

}]

}

}

測試代碼:

private static void jsonPathTest() {

JSONObject responseJson= jsonTest();//調(diào)用自定義的jsonTest()方法獲得json對象,生成上面的json

//輸出text的值

String text = JsonPath.read(responseJson,"$.text");

//輸出rvNoNum的值

int rvNoNum = JsonPath.read(responseString,"$.body.rvNoNum");

//輸出rvNoRecords數(shù)組的第2個值

List rvNoRecords = JsonPath.read(responseString,"$..rvNoRecords[1]");

//輸出rvNoRecords數(shù)組的第1和第2個值

List rvNoRecords1 = JsonPath.read(responseString,"$..rvNoRecords[0,1]");

//輸出rvNoRecords數(shù)組中score<=expensive的所有值

List rvNoRecords2 = JsonPath.read(responseString,"$..rvNoRecords[?(@.score < $['expensive'])]");

//輸出rvNoRecords[0]的rvAddress值

String rvAddress1 = JsonPath.read(responseJson, "$.body.rvNoRecords[0].rvAddress");

//輸出全部rvAddress的值,使用Iterator迭代

List rvAddress = JsonPath.read(responseJson,"$.body.rvNoRecords[*].rvAddress");

//輸出rvNoRecords[*]中rvAddress== '2'的rvNoRecords

List rvAddress2 = JsonPath.read(responseJson,"$.body.rvNoRecords[?(@.rvAddress == 2)]");

//輸出rvNoRecords[*]中score>5 的rvNoRecords

List score = JsonPath.read(responseJson,"$.body.rvNoRecords[?(@.score>5)]");

//輸出rvNoRecords[*]中含有consignments元素的rvNoRecords

List consignments = JsonPath.read(responseString,"$.body.rvNoRecords[?(@.consignments)]");

//輸出該json中所有rvAddress的值

List rvNoNum2 = JsonPath.read(responseString,"$..rvAddress");

//輸出rvNoRecords數(shù)組的長度

List length = JsonPath.read(responseString,"$..rvNoRecords.length()");

//可以提前編輯一個路徑,并多次使用它

JsonPath path = JsonPath.compile("$.body.rvNoRecords[*]");

List rvNoRecords3 = path.read(responseString);

}

到此這篇關(guān)于使用 JSONPath 解析 JSON 完整內(nèi)容詳解的文章就介紹到這了,更多相關(guān)使用 JSONPath 解析 JSON 完整內(nèi)容詳解內(nèi)容請搜索我們以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持我們!

時間: 2020-03-22

總結(jié)

以上是生活随笔為你收集整理的java json path_Java使用JSONPath解析JSON完整内容详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。