書接上文和上上文:
之前分享了jsonpath
的部分API
使用,基本已經把基礎的內容講完了,今天分享一下JsonPath API
中的函數的使用方法,其實之前講到的一些json數組
的過濾中已經用到了一些函數
,大概是因為功能不一樣吧,這里將的函數都是處理json數組
的,而不是過濾數組的條件。
json數據
在原來的數據基礎上增加了部分字段和部分節點。
JSONObject json = JSON.parseObject("{" +
" \"store\": {" +
" \"book\": [" +
" {" +
" \"category\": \"reference\"," +
" \"author\": \"Nigel Rees\"," +
" \"title\": \"Sayings of the Century\"," +
" \"page\": \"D\"," +
" \"pages\": [\"S\",\"X\",\"G\"]," +
" \"price\": 8.95" +
" }," +
" {" +
" \"category\": \"fiction\"," +
" \"author\": \"Evelyn Waugh\"," +
" \"title\": \"Sword of Honour\"," +
" \"page\": \"A\"," +
" \"pages\": [\"A\",\"B\"]," +
" \"price\": 12.99" +
" }," +
" {" +
" \"category\": \"fiction\"," +
" \"author\": \"Herman Melville\"," +
" \"title\": \"Moby Dick\"," +
" \"isbn\": \"0-553-21311-3\"," +
" \"page\": \"B\"," +
" \"pages\": [\"E\",\"F\"]," +
" \"price\": 8.99" +
" }," +
" {" +
" \"category\": \"fiction\"," +
" \"author\": \"J. R. R. Tolkien\"," +
" \"title\": \"The Lord of the Rings\"," +
" \"isbn\": \"0-395-19395-8\"," +
" \"page\": \"C\"," +
" \"pages\": [\"C\",\"D\"]," +
" \"price\": 22.99" +
" }" +
" ]," +
" \"bicycle\": {" +
" \"color\": \"red\"," +
" \"price\": 19.95" +
" }" +
" }," +
" \"expensive\": 10," +
" \"ss\": [32,32,4,23]" +
"}");
獲取數組最小值
jsonpath
:$.ss.min()
代碼:
Object read = JsonPath.read(json, "$.ss.min()");
output(read);
等效寫法繼續省略……
控制臺輸出:
INFO-> 當前用戶:fv,IP:10.60.192.21,工作目錄:/Users/fv/Documents/workspace/fun/,系統編碼格式:UTF-8,系統Mac OS X版本:10.15.6
INFO-> 4.0
Process finished with exit code 0
- 這里需要注意,該方法返回值是一個
double
的數值,測試中用的int
整型,但是結果返回的是4.0
。
獲取數組的最大值
jsonpath
:$.ss.max()
代碼:
Object read = JsonPath.read(json, "$.ss.max()");
output(read);
等效寫法繼續省略……
控制臺輸出:
INFO-> 當前用戶:fv,IP:10.60.192.21,工作目錄:/Users/fv/Documents/workspace/fun/,系統編碼格式:UTF-8,系統Mac OS X版本:10.15.6
INFO-> 32.0
Process finished with exit code 0
- 同樣的,
max
函數返回的也是double
浮點型數據。
獲取數組的平均值
jsonpath
:$.ss.avg()
代碼:
Object read = JsonPath.read(json, "$.ss.avg()");
output(read);
等效寫法繼續省略……
控制臺輸出:
INFO-> 當前用戶:fv,IP:10.60.192.21,工作目錄:/Users/fv/Documents/workspace/fun/,系統編碼格式:UTF-8,系統Mac OS X版本:10.15.6
INFO-> 22.75
Process finished with exit code 0
- 同樣的,
max
函數返回的也是double
浮點型數據。
獲取數組的標準差
jsonpath
:$.ss.stddev()
代碼:
Object read = JsonPath.read(json, "$.ss.stddev()");
output(read);
等效寫法繼續省略……
控制臺輸出:
INFO-> 當前用戶:fv,IP:10.60.192.21,工作目錄:/Users/fv/Documents/workspace/fun/,系統編碼格式:UTF-8,系統Mac OS X版本:10.15.6
INFO-> 11.431863365173676
Process finished with exit code 0
- 同樣的,
stddev
函數返回的也是double
浮點型數據。
獲取數組的長度
- 對于
json數組
適用。
jsonpath
:$.ss.length()
jsonpath
:$.store.book.length()
代碼:
Object read = JsonPath.read(json, "$.ss.length()");
output(read);
Object read = JsonPath.read(json, "$.store.book.length()");
output(read);
等效寫法繼續省略……
控制臺輸出:
INFO-> 當前用戶:fv,IP:10.60.192.21,工作目錄:/Users/fv/Documents/workspace/fun/,系統編碼格式:UTF-8,系統Mac OS X版本:10.15.6
INFO-> 4
Process finished with exit code 0
求數組的和
jsonpath
:$.ss.sum()
代碼:
Object read = JsonPath.read(json, "$.ss.sum()");
output(read);
等效寫法繼續省略……
控制臺輸出:
INFO-> 當前用戶:fv,IP:10.60.192.21,工作目錄:/Users/fv/Documents/workspace/fun/,系統編碼格式:UTF-8,系統Mac OS X版本:10.15.6
INFO-> 91.0
Process finished with exit code 0
- 同樣的,
sun
函數返回的也是double
浮點型數據。
自此,JsonPath API
系列已經更完了,我在積極準備JsonPath util
的內容,使用Groovy
的Groovy重載操作符(終極版)功能,敬請期待。
- 公眾號FunTester首發,更多原創文章:450+原創文章,歡迎關注、交流,禁止第三方擅自轉載。