将数组格式的JSON字符串转换为java中的数组

时间:2013-04-11 06:08:11

标签: android

我正在尝试将以下字符串作为json对象:

 [
    {
        "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());
}

temp是来自服务器的json

3 个答案:

答案 0 :(得分:4)

问题在这里:

JSONArray myjsonarray = myjson.toJSONArray(temparray); 

<强>解决方案:

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

现在,您正在使用JSONArray,对其进行迭代并准备ArrayList您想要的任何类型。

答案 1 :(得分: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");
}

答案 2 :(得分: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");
}
...