<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      JsonPath語法

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

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

      github上有它的應用:https://github.com/json-path/JsonPath

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

      com.jayway.jsonpath
      json-path
      2.2.0

      JsonPath表達式總是以與XPath表達式結合使用XML文檔相同的方式引用JSON結構。

      JsonPath中的“根成員對象”始終稱為$,無論是對象還是數組。

      JsonPath表達式可以使用點表示法

      $.store.book [0].title

      或括號表示法

      $['store']['book'][0]['title']

      jsonpath操作符:
      操作 說明
      $ 查詢根元素。這將啟動所有路徑表達式。
      @ 當前節點由過濾謂詞處理。

      • 通配符,必要時可用任何地方的名稱或數字。
        .. 深層掃描。 必要時在任何地方可以使用名稱。
        .
        點,表示子節點
        ['' (, '')]
        括號表示子項
        [ (, )]
        數組索引或索引
        [start:end]
        數組切片操作
        [?()] 過濾表達式。 表達式必須求值為一個布爾值。

      函數
      函數可以在路徑的尾部調用,函數的輸出是路徑表達式的輸出,該函數的輸出是由函數本身所決定的。

      函數 描述 輸出
      min() 提供數字數組的最小值 Double
      max() 提供數字數組的最大值 Double
      avg() 提供數字數組的平均值 Double
      stddev() 提供數字數組的標準偏差值 Double
      length() 提供數組的長度 Integer
      過濾器運算符
      過濾器是用于篩選數組的邏輯表達式。一個典型的過濾器將是[?(@.age > 18)],其中@表示正在處理的當前項目。 可以使用邏輯運算符&&和||創建更復雜的過濾器。 字符串文字必須用單引號或雙引號括起來([?(@.color == 'blue')] 或者 [?(@.color == "blue")]).

      操作符 描述
      == left等于right(注意1不等于'1')
      != 不等于
      < 小于
      <= 小于等于

      大于
      = 大于等于
      =~ 匹配正則表達式[?(@.name =~ /foo.*?/i)]
      in 左邊存在于右邊 [?(@.size in ['S', 'M'])]
      nin 左邊不存在于右邊
      size (數組或字符串)長度
      empty (數組或字符串)為空
      接下來我們就用java代碼來寫一個案例:

      Java操作示例
      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
      }
      },
      "expensive": 10
      }
      JsonPath (點擊鏈接測試) 結果
      $.store.book[].author 獲取json中store下book下的所有author值
      $..author 獲取所有json中所有author的值
      $.store.
      所有的東西,書籍和自行車
      $.store..price 獲取json中store下所有price的值
      $..book[2] 獲取json中book數組的第3個值
      $..book[-2] 倒數的第二本書
      $..book[0,1] 前兩本書
      $..book[:2] 從索引0(包括)到索引2(排除)的所有圖書
      $..book[1:2] 從索引1(包括)到索引2(排除)的所有圖書
      $..book[-2:] 獲取json中book數組的最后兩個值
      $..book[2:] 獲取json中book數組的第3個到最后一個的區間值
      $..book[?(@.isbn)] 獲取json中book數組中包含isbn的所有值
      $.store.book[?(@.price < 10)] 獲取json中book數組中price<10的所有值
      $..book[?(@.price <= $['expensive'])] 獲取json中book數組中price<=expensive的所有值
      $..book[?(@.author =~ /.REES/i)] 獲取json中book數組中的作者以REES結尾的所有值(REES不區分大小寫)
      $..
      逐層列出json中的所有值,層級由外到內
      $..book.length() 獲取json中book數組的長度

      上面的json字符串的讀取案例:

      (1)

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

      如果你只想讀取一次,那么上面的代碼就可以了

      如果你還想讀取其他路徑,現在上面不是很好的方法,因為他每次獲取都需要再解析整個文檔。所以,我們可以先解析整個文檔,再選擇調用路徑。

      String json = "...";
      Object document = Configuration.defaultConfiguration().jsonProvider().parse(json);

      String author0 = JsonPath.read(document, "$.store.book[0].author");
      String author1 = JsonPath.read(document, "$.store.book[1].author");

      (3)

      當在java中使用JsonPath時,重要的是要知道你在結果中期望什么類型。 JsonPath將自動嘗試將結果轉換為調用者預期的類型。

      // 拋出 java.lang.ClassCastException 異常
      List list = JsonPath.parse(json).read("$.store.book[0].author")

      // 正常
      String author = JsonPath.parse(json).read("$.store.book[0].author")

      (4)

      默認情況下,MappingProvider SPI提供了一個簡單的對象映射器。 這允許您指定所需的返回類型,MappingProvider將嘗試執行映射。 在下面的示例中,演示了Long和Date之間的映射。

      String json = "{"date_as_long" : 1411455611975}";
      Date date = JsonPath.parse(json).read("$['date_as_long']", Date.class);

      (5)

      如果您將JsonPath配置為使用JacksonMappingProvider或GsonMappingProvider,您甚至可以將JsonPath輸出直接映射到POJO中。

      Book book = JsonPath.parse(json).read("$.store.book[0]", Book.class);

      另外一個案例:
      { "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,
      "isbn": "0-553-21311-3"
      }
      ],
      "bicycle": {
      "color": "red",
      "price": 19.95
      }
      }
      }
      private static void jsonPathTest() {

      JSONObject json = jsonTest();//調用自定義的jsonTest()方法獲得json對象,生成上面的json
      
      //輸出book[0]的author值
      
      String author = JsonPath.read(json, "$.store.book[0].author");    
      
      //輸出全部author的值,使用Iterator迭代
      
      List<String> authors = JsonPath.read(json, "$.store.book[*].author");  
      
      //輸出book[*]中category == 'reference'的book
      
      List<Object> books = JsonPath.read(json, "$.store.book[?(@.category == 'reference')]");              
      
      //輸出book[*]中price>10的book
      
      List<Object> books = JsonPath.read(json, "$.store.book[?(@.price>10)]");
      
      //輸出book[*]中含有isbn元素的book
      
      List<Object> books = JsonPath.read(json, "$.store.book[?(@.isbn)]");
      
      //輸出該json中所有price的值
      
      List<Double> prices = JsonPath.read(json, "$..price");
      
      //可以提前編輯一個路徑,并多次使用它
      
      JsonPath path = JsonPath.compile("$.store.book[*]");
      
      List<Object> books = path.read(json);
      

      }

      posted @ 2024-01-09 15:20  品書讀茶  閱讀(1042)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 郸城县| 女人扒开的小泬高潮喷小 | 人妻丰满熟妇av无码区| 国产一区二区高清不卡| 国产精品久久久久影院亚瑟| 国产精品自拍视频免费看| 日本熟妇XXXX潮喷视频| 高清国产精品人妻一区二区| 国产mv在线天堂mv免费观看| 亚洲精品一二三四区| 中文字幕av一区二区| 国产性天天综合网| 国产日韩久久免费影院| 国产欧美另类久久久精品不卡 | 潘金莲高清dvd碟片| 中文字幕亚洲国产精品| 日本久久久久久久做爰片日本| 亚洲人成网站在线观看播放不卡| 亚洲丰满老熟女激情av| 久久久成人毛片无码| 若尔盖县| 亚洲av色香蕉一区二区| 国产精品美女久久久久久麻豆| 在线观看视频一区二区三区| 色噜噜亚洲男人的天堂| 国产高清在线精品一本大道| 一区二区三区鲁丝不卡| 亚洲综合色丁香婷婷六月图片| 中文字幕av中文字无码亚| 亚洲av色香蕉一区二区三| 无遮无挡爽爽免费视频| 国产精品v片在线观看不卡| 国产超高清麻豆精品传媒麻豆精品| 黑森林福利视频导航| 国产精品久久久久久久久久久久| 欧美成人h亚洲综合在线观看| 国产成人精品久久性色av| 国产亚洲欧美日韩在线一区二区三 | 欧美日韩国产一区二区三区欧 | 久久久久久亚洲精品成人| 成av免费大片黄在线观看|