2017-10-05 51 views
1

選擇多個值,我有一個JSON像下面給出JSON的關鍵在Java

[{ 
    "D_Table_Name": "BUILDING", 
    "S_Table_Name": "View1", 
    "S_Data_Field_Name": "USECD", 
    "D_Field_Name": "Description", 
    "MappingCode": "FIELD" 
    }, 
    { 
    "D_Table_Name": "BUILDING", 
    "S_Table_Name": "View1", 
    "S_Data_Field_Name": "USECD", 
    "D_Field_Name": "StndCode", 
    "MappingCode": "FIELD" 
    }, 
    { 
    "D_Table_Name": "asdasd", 
    "S_Table_Name": "View1", 
    "S_Data_Field_Name": "qwew", 
    "D_Field_Name": "ijhbgr4", 
    "MappingCode": "FIELD" 
    }, 
    { 
    "D_Table_Name": "qwsdcv", 
    "S_Table_Name": "View1", 
    "S_Data_Field_Name": "kjmnbv", 
    "D_Field_Name": "dszfs", 
    "MappingCode": "FIELD" 
    }] 

如何獲得的關鍵S_Table_Name

+1

您到目前爲止嘗試了什麼?我會使用某種循環,可能是一個或兩個if塊。 - 要認真:這個問題很有趣,請詳細說明。 – Thomas

+1

[如何搜索Json文件中的值]可能的重複(https://stackoverflow.com/questions/46443379/how-to-search-for-values-inside-json-file) – VedX

回答

2

所有的價值假設你使用任何特定的庫JSON字符串轉換成一個對象,比方說,我正在GSON

List<String> sTableNameValues = new ArrayList<>(); 
List<Map<String,String>> input = new GSON.fromJSON(inputJSONString); 
for(Map.Entry<String,String> entry: input.entrySet()){ 
    if(entry.getKey().equals("S_Table_Name")){ 
     sTableNameValues.add(entry.getValue()); 
    } 
} 
// Now all your S_Table_Name values are inside your list. 
+0

謝謝讓我試試.. 。 –

1

喜歡的東西json-path應該有所幫助。在你的情況,表達式應該是這樣的:

$[*].S_Table_Name 
2

使用傑克遜庫:

ObjectMapper mapper = new ObjectMapper(); 
JsonNode array = mapper.readValue(yourJson, JsonNode.class); 

獲取值:

for (int i = 0; i < array.size(); i++) { 
    String reportKey = array.get(i).get("S_Table_Name").textValue(); 
    System.out.println(reportKey); 
} 
1

您還可以使用org.json.JSONObject庫。請參閱下面的代碼:

String response = "[{\"D_Table_Name\": \"BUILDING\",\"S_Table_Name\": \"View1\",\"S_Data_Field_Name\": \"USECD\",\"D_Field_Name\": \"Description\",\"MappingCode\": \"FIELD\"},{\"D_Table_Name\": \"BUILDING\",\"S_Table_Name\": \"View1\",\"S_Data_Field_Name\": \"USECD\",\"D_Field_Name\": \"StndCode\",\"MappingCode\": \"FIELD\"},{\"D_Table_Name\": \"asdasd\",\t\t\"S_Table_Name\": \"View1\",\"S_Data_Field_Name\": \"qwew\",\"D_Field_Name\": \"ijhbgr4\",\"MappingCode\": \"FIELD\"},{\"D_Table_Name\": \"qwsdcv\",\"S_Table_Name\": \"View1\",\t\"S_Data_Field_Name\": \"kjmnbv\",\"D_Field_Name\": \"dszfs\",\"MappingCode\": \"FIELD\"}]"; 

    JSONArray responseArray = new JSONArray(response); 

    if (responseArray.length() > 0) { 
     for (int i = 0; i < responseArray.length(); i++) { 
      JSONObject responseObject = responseArray.getJSONObject(i); 
      if (responseObject.has("S_Table_Name")) { 
       String S_Table_Name = responseObject.getString("S_Table_Name"); 
       System.out.println(S_Table_Name); 
      } 
     } 
    }