JsonPath實踐(六)

書接上文和上上文:

之前分享了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的內容,使用GroovyGroovy重載操作符(終極版)功能,敬請期待。


  • 公眾號FunTester首發,更多原創文章:450+原創文章,歡迎關注、交流,禁止第三方擅自轉載。

熱文精選

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。