如何解析android中没有名称的json数组?

时间:2015-10-03 08:39:43

标签: java android json

如何解析android中的json数组,如下所示:

["BHUBANESWAR","BANGALORE CANT","BRAHMAPUR","VISAKHAPATNAM",
"VIJAYAWADA ROAD","ASOKHAR","CHAURAKHERI","BANIHAL","SADURA","ANANTNAG",
"PANJGAM","AWANTIPURA","KAKAPORA","PAMPORE"]

我正在尝试的是:

     try {
            JSONObject json = new JSONObject(s);

            JSONArray jsonArray = json.names();

            for ( int i = 0 ; i < jsonArray.length();i++)
            {
                Toast.makeText(getApplicationContext(),jsonArray.getInt(i),Toast.LENGTH_LONG).show();
            }

        } catch (JSONException e) {
            e.printStackTrace();
        }

但我没有得到任何输出。

2 个答案:

答案 0 :(得分:4)

试试这个......

try {
        JSONArray jsonArray = new JSONArray(s);

        for ( int i = 0 ; i < jsonArray.length();i++) {

            Toast.makeText(getApplicationContext(),jsonArray.getString(i),Toast.LENGTH_LONG).show();

        }

} catch (JSONException e) {
     e.printStackTrace();
}

答案 1 :(得分:2)

uday的答案是对的,让我提供更详细的解释。

JSON提供两种基本数据结构:对象数组

对象的格式如下:

"name":{value(s)}

值可以是另一个对象,一个数组或只是一些数据。

另一方面,

数组的格式如下:

[{value}, {value}, {value}...]

同样,value可以是Object,另一个数组,或者在您的示例中,是一个简单的数据。

您的错误发生是因为您认为您收到的数据是一个内部有数组的对象。但是,它实际上是一个匿名数组,这意味着您无法先解析为JSONObject,您需要从头开始使用JSONArray

所以这是一个匿名数组:

["BHUBANESWAR","BANGALORE CANT","BRAHMAPUR","VISAKHAPATNAM",
"VIJAYAWADA ROAD","ASOKHAR","CHAURAKHERI","BANIHAL","SADURA","ANANTNAG",
"PANJGAM","AWANTIPURA","KAKAPORA","PAMPORE"]

如果它是一个对象(例如,称为 myArray ),它将如下所示:

"myArray":["BHUBANESWAR","BANGALORE CANT","BRAHMAPUR","VISAKHAPATNAM",
"VIJAYAWADA ROAD","ASOKHAR","CHAURAKHERI","BANIHAL","SADURA","ANANTNAG",
"PANJGAM","AWANTIPURA","KAKAPORA","PAMPORE"]

差别很小(只是"myArray":部分),但必须以正确的方式解析,否则解析器将失败。