2016-11-17 55 views
0

我有一個JSON數據,我需要解析一個路徑並從該JSON數據中獲取值。 我的JSON數據格式是這樣的:獲取提取特定值的JSON對象編號

"PAYLOAD": [ 
     { 
      "ModuleID": "40", 
      "ModuleName": "Job Posting" 

     }, 
     { 
      "ModuleID": "40", 
      "ModuleName": "Job Posting" 

     }, 
     { 
      "ModuleID": "180", 
      "ModuleName": "Invoice" 
     },................. 

現在我檢查鍵值,如:

boolean hello=jp.getString("PAYLOAD.ModuleName").contains("Job Posting"); 

它取了我的價值「職位發佈」無論是在JSON數據中存在或不是,但不包含具有此值的JSON對象編號。 我不想使用for-loops來獲取對象編號。 是否有任何簡短的方法來獲取具有特定值對應於特定路徑的對象編號?

回答

0

下面的表達式

PAYLOAD[?(@.ModuleName='Job Posting')].ModuleID 

返回

["40","40"] 

你可以給一個嘗試。

+0

但這種表達不給我其中包含了負載對象的對象編號(模塊名作爲「職位發佈」) –

+0

我的壞。它應該是'PAYLOAD [?(@。ModuleName =='Job Posting')]。ModuleID' – Ramu

0

我在這裏粘貼我的代碼片段。確保您的路徑中有JSONPath jar文件。這是打印所需的輸出["40","40"]

String JSONString = "{\"PAYLOAD\": [{\"ModuleID\": \"40\",\"ModuleName\": \"Job Posting\"}, {\"ModuleID\": \"40\",\"ModuleName\": \"Job Posting\"}, {\"ModuleID\": \"180\",\"ModuleName\": \"Invoice\"}]}"; 
    net.minidev.json.JSONArray jsonArray = com.jayway.jsonpath.JsonPath 
      .parse(JSONString).read(
        "PAYLOAD[?(@.ModuleName=='Job Posting')].ModuleID"); 
    System.out.println("Result: " + jsonArray.toString());