如何解析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();
}
但我没有得到任何输出。
答案 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":
部分),但必须以正确的方式解析,否则解析器将失败。