2014-07-15 90 views
0

目前我正試圖理解json以及它是如何工作的。 但我有一個對象數組的問題。 所有對象在數組中有一個稱爲「價值」(我知道這很奇怪,這不是我的代碼)什麼也是對象。 現在解決問題:這個名爲「value」的對象總是有不同的鍵值。 所以我現在不怎麼能每次解析json代碼到java對象代碼,當它不同時。JSON數組中的不同對象

這裏的一些例子:

陣列的第一個對象:所述陣列的

"value": 
{ 
    "local": 
    [ 
    "English", "Deutsch", Espanol" 
    ], 
    "english": 
    [ 
    "English", "Deutsch", Espanol" 
    ], 
}, 

第二對象(現在是字符串,而不是對象):

"value" : "", 

的第三個目的陣列:

"value" : {}, 

...

也許我做的解析錯誤。 首先,我在java中爲json代碼創建了bean類,然後我使用了google的自動解析器。 (gson) 當上面的例子中只有一個是在json代碼中時,它可以工作。 (它不應該不同,像從字符串變爲對象...)

Gson gson = new Gson(); 
Output output = gson.fromJson(json, Output.class); 

輸出是json的主要類。

我已經找到了,也許在解析我​​可以檢查一個名爲「ID」第一個值,並從我可以創建一個有正確的變量另一個豆類...

那是我的代碼需要解析到Java對象,你怎麼做? 問題是關鍵所謂的「價值」,因爲它總是不同的。 隨着我使用谷歌分析器「GSON」的方法,它不會工作,因爲我得到不同的是它的一個字符串,但我一直在等待一個對象...

{ 
"status":"success", 
"data":{ 
"panel":{ 
"title":{ 
"label":{ "local":"Tote Selection", "english":"Tote Selection" }, 
"image":"public/img/pick.jpg", "type":"default" 
}, 
"isFirst":false, // currently not used 
"isLast":false, // currently not used 
"ownCount":0, // currently not used 
"panelsCount":0, // currently not used 
"elements":[ 
{ 
"type":"text", 
"id":"1", "value":{ "local":"Scan next order tote", 
"english":"Scan next order tote" }, 
"label":{ "local":"", "english":"" }, "color":"000000", 
"fontsize":18, "fontstyle":"flat", "alignment":"left", 
"rows":"undefined", "bgcolor":"", "isFocus":false 
}, 
{ 
"type":"text", 
"id":"4", "value":{ "local":"Scan tote: ", "english":"Scan tote: " }, 
"label":{ "local":"", "english":"" }, "color":"000000", "fontsize":20, 
"fontstyle":"strong", "alignment":"left", "rows":"undefined", 
"bgcolor":"", "isFocus":false 
}, 
{ 
"type":"input", 
"id":"6", "value":"", "label":{ "local":"", "english":"" }, 
"color":"000000", "fontsize":24, "fontstyle":"flat", "alignment":"left", 
"rows":"undefined", "isFocus":true 
}, 
{ 
"type":"button", 
"id":"1", "value":{ "local":"", "english":"" }, 
"label":{ "local":"Menu", "english":"Menu" }, "color":"000000", 
"fontsize":14, "fontstyle":"strong", "alignment":"left", 
"rows":"undefined", "isFocus":false 
}, 
{ 
"type":"button", 
"id":"4", "value":{ "local":"", "english":"" }, 
"label":{ "local":"Enter", "english":"Enter" }, "color":"000000", 
"fontsize":14, "fontstyle":"strong", "alignment":"right",18 
"rows":"undefined", "isFocus":false 
} 
] 
}, 
"authToken":"0fdd440a-619f-4936-ab74-d189accb5bd9", 
"routing":{ 
"controller":"panel", 
"action":"process", 
"workflowId":"singlepicking", 
"taskId":"orderSelection" 
} 
} 
} 

謝謝您的幫助!

+0

那麼是什麼要求,它是從JSON數組中檢索值?如果是,只需使用for循環。 – Biplab

+0

是的數組和他的對象,字符串的所有值.... –

+0

你是什麼意思,只是使用for循環。我的意思是如果gson爲我解析代碼,我無法做到這一點。 –

回答

0

如果我的理解烏爾問題正確ü可以檢索JSONArray的值如下

for (int i = 0; i < JArray.length(); i++) { 
      print(JArray.getJSONObject(i).tostring()) 
     } 

所以,如果我是正確的ü是從串首先得到JSON?所以請嘗試以下第一家店的JSONObject的字符串爲JSONObject obj = new JSONObject(str);//str is the string that u are getting

得到了在數據面板絲毫不差標籤的valueenglish是

String englishinLable=obj .getJSONObject("data").getJSONObject("panel").getJSONObject("title").getJSONObject("label").optString("english") 
+0

和其他?它不僅是一個數組,請看我現在發佈的代碼。 –

+0

所以,如果我是正確的你從一個字符串首先得到JSON? – Biplab

+0

是的,這是正確的 –

1

它看起來有點不同,但你的回答幫我! Thx

 JsonParser parser = new JsonParser(); 
     JsonObject obj = parser.parse(br).getAsJsonObject(); 

     //now getting all the json values 
     String status = obj.get("status").getAsString(); 
     JsonObject data = obj.getAsJsonObject("data"); 

     String authToken = data.get("authToken").getAsString(); 
     JsonObject routing = data.getAsJsonObject("routing"); 
     String controller = routing.get("controller").getAsString(); 
     String action = routing.get("action").getAsString(); 
     String workflowId = routing.get("taskId").getAsString();