2013-04-11 130 views
1

我試圖採取以下字符串,我得到了作爲一個JSON對象的數組:轉換JSON字符串數組格式轉換成Java中

[ 
    { 
     "id": "picture1", 
     "caption": "sample caption", 
     "picname": "sample picture name" 
     } 
] 

,並把它變成一個數組,所以我可以填充列表

我試圖這樣做把它變成一個jsonarray:

JSONArray myjsonarray = myjson.toJSONArray(string_containing_json_above); 

,但似乎並沒有工作。

==============

這裏是工作液

myjson = new JSONObject(temp); 
String String_that_should_be_array = myjson.getString("piclist"); 
JSONArray myjsonarray = new JSONArray(String_that_should_be_array); 
For(int i = 0; i < myjsonarray.length(); i++){ 
    JSONObject tempJSONobj = myjsonarray.getJSONObject(i); 
    showToast(tempJSONobj.get("caption").toString()); 
} 

臨時完整的代碼是從服務器

+0

什麼是'myson'?什麼是'temparray'?你看過[JavaDoc for JSONArray](http://developer.android.com/reference/org/json/JSONArray.html#JSONArray(java.lang.String))嗎?記下接受字符串的構造函數。 – Perception 2013-04-11 06:12:34

+0

我編輯帖子以使其更有意義。對不起。 temparray是一個字符串,但我已經將我的代碼中的變量重命名,因爲它是一個可怕的變量名稱 – TheMcMurder 2013-04-11 06:23:06

+0

好吧,這樣可以清除一些東西。但是你沒有提到'myjson'是什麼。但是,請參閱@PareshMayani的回答。 – Perception 2013-04-11 06:26:37

回答

3

這裏你JSONArray所以更改

JSONArray myjsonarray = myjson.toJSONArray(temparray); 

線如下圖所示

JSONArray jsonArray = new JSONArray(readlocationFeed); 

JSONArray jsonArray = new JSONArray(readlocationFeed); 

    for (int i = 0; i < jsonArray.length(); i++) { 
     JSONObject explrObject = jsonArray.getJSONObject(i); 
     explrObject.getString("caption"); 
} 
+0

完美!非常感謝你的工作。 – TheMcMurder 2013-04-11 06:27:16

+0

WC:)...... ,,,, – kyogs 2013-04-11 06:31:46

4

問題的JSON是在這裏:

JSONArray myjsonarray = myjson.toJSONArray(temparray); 

解決方案:

JSONArray myjsonarray = new JSONArray(myJSON); 
// myJSON is String 

現在這裏你有JSONArray,遍歷它和你要準備什麼類型的ArrayList

+0

對不起,我只能標記一個是正確的,但這也是正確的。謝謝Paresh Mayani! – TheMcMurder 2013-04-11 06:28:50

+0

我會upvote你,但我沒有聲望upvote呢。當我做我會的。再次感謝你。 – TheMcMurder 2013-04-11 06:38:30

0

JSONArray不工作,因爲您提供的JSON是不是數組。你可以閱讀更多有關JSON語法的位置:http://www.w3schools.com/json/json_syntax.asp

在此期間,你可以手動通過一次配對的JSON一根弦創建數組。

JSONObject strings = new JSONObject(jsonString); 
String array[] = new String[5]; 

if (jsonString.has("id"){ 
    array[0] = jsonString.getString("id"); 
} 
if (jsonString.has("caption"){ 
    array[1] = jsonString.getString("caption"); 
} 
... 

+0

你真的比'ArrayList '更喜歡'String []'嗎? – 2013-04-11 06:19:05

+0

不,我想我只是認爲,因爲問題指定了一個「數組」,這是他/他想要的。 – dckuehn 2013-04-11 16:49:53