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

Android 将数组格式的JSON字符串转换为java中的数组,android,Android,我尝试将以下字符串作为json对象: [ { "id": "picture1", "caption": "sample caption", "picname": "sample picture name" } ] 然后把它变成一个数组,这样我就可以填充一个列表 我尝试通过以下操作将其转换为jsonarray: JSONArray myjsonarray = myjson.toJSONArray(string_contain

我尝试将以下字符串作为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问题如下:

解决方案:

现在您有了JSONArray,对它进行迭代并准备您想要的任何类型的ArrayList。

问题在这里:

解决方案:


现在有了JSONArray,对它进行迭代,并准备任意类型的ArrayList。

JSONArray不起作用,因为您提供的JSON不是数组。您可以在此处阅读有关JSON语法的更多信息:

同时,您可以通过一次对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");
}
...

等等。

JSONArray无法工作,因为您提供的JSON不是数组。您可以在此处阅读有关JSON语法的更多信息:

同时,您可以通过一次对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");
}
...

等等。

这里有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");
}

这是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");
}

什么是迈森?什么是temparay?你看过报纸了吗?请注意接受字符串的构造函数。我编辑了这篇文章以使其更有意义。我很抱歉。temparray是一个字符串,但我在代码中重命名了该变量,因为它是一个糟糕的变量名OK,所以清除了一些内容。但你没有提到什么是“myjson”。但是,请参阅@PareshMayani的答案。myson是什么?什么是temparay?你看过报纸了吗?请注意接受字符串的构造函数。我编辑了这篇文章以使其更有意义。我很抱歉。temparray是一个字符串,但我在代码中重命名了该变量,因为它是一个糟糕的变量名OK,所以清除了一些内容。但你没有提到什么是“myjson”。但是,请参见@PareshMayani的答案。你真的更喜欢String[]而不是ArrayList吗?不,我想我只是认为,因为问题指定了一个数组,这正是他/她想要的。你真的更喜欢String[]而不是ArrayList吗?不,我想我只是想,因为问题指定了一个数组,这正是他/她想要的。对不起,我只能将一个标记为正确,但这也是正确的。谢谢你,帕雷什·马亚尼!我会投票给你,但我还没有投票给你的名声。我会的。再次感谢。对不起,我只能将一个标记为正确,但这也是正确的。谢谢你,帕雷什·马亚尼!我会投票给你,但我还没有投票给你的名声。我会的。再次感谢你。