2014-06-08 126 views
0

我在視圖中創建了一個json數組;它具有動態數據,我將該數組作爲隱藏輸入字段發送給彈簧控制器。 我得到這個數組爲:從json數組讀取數據

String string=request.getParameter("jsonStateCompanyOnSubmit"); 
logger.info("jsong format is:"+string); 

的JSON數據是:

[ 
{ 
    "MH":{ 
    "data":{ 
     "ACC":4, 
     "SHREE":2 
    }, 
    "name":"MH" 
    }, 
    "MP":{ 
    "data":{ 
     "ACC":9, 
     "SHREE":6 
    }, 
    "name":"MP" 
    } 
} 
] 

我如何可以提取:

MH,ACC,4 
MH,SHREE,2 
MP,ACC,9 
MP,SHREE,6 
+0

使用GSON庫 http://www.journaldev.com/2321/google-gson-api-for-json-processing-example-tutorial –

回答

1

沒有進入細節,檢查包裝javax.json。在那裏你可以找到Json類來創建一個解析器,然後以類似於地圖的方式訪問數據。

0

除了別人怎麼寫 - 我會向你推薦傑克遜:

List<?> list = new org.codehaus.jackson.map.ObjectMapper().readValue(FileUtils.read(file), List.class); 
for(Object obj: list){ 
    Map<?, ?> map = (Map<?, ?>) obj; 
    //do your stuff here 
} 
0

只需使用JSONObject構造。

一個JSONObject構造函數可用於外部形式JSON文本轉換爲內部形式,其值可以與獲得和選擇方法來檢索,或將數值轉換成使用put和toString方法JSON文本。

示例代碼:(不要在其他值的方法相同)

JSONObject jsonObject = new JSONObject(jsonString); 

JSONObject mh = jsonObject.getJSONObject("MH"); 
int acc=mh.getJSONObject("data").getInt("ACC"); // output 4 

注意:只是刪除在此之前封閉[]。

0

您需要從字符串中解析JSON。使用JSON.simple API,您可以使用解析器。

JSONParser parser = new JSONParser(); 
try { 
    Object obj = parser.parse(string); 
    JSONArray arr = (JSONArray) obj; 
    Iterator<Object> iterator = arr.iterator(); 
    while (iterator.hasNext()) { 
     JSONObject m = (JSONObject)iterator.next(); 
     JSONObject data = (JSONObject) m.get("data"); 
     Integer acc = (Integer)data.get("ACC"); 
     ... 
    } 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 
+0

感謝回覆參見本教程解析JSON。但在我的情況下,ACC不是固定的內容,如果數據庫發生變化,名稱將發生變化。只有數據和名稱固定在該數組中 – user3719245

+0

如果名稱將更改,則應提供名稱。你可以在這裏找到解碼示例(https://code.google.com/p/json-simple/wiki/DecodingExamples)。 –

+0

@ user3719245你也可以選擇json對象和java之間的映射,參見[這裏](https://code.google.com/p/json-simple/wiki/MappingBetweenJSONAndJavaEntities)。 –