通过JSONObject循环创建数组Java

时间:2016-02-26 01:28:55

标签: java android json arraylist jsonobject

我有JSONObject以下格式:

[{"ascii_name":"Rio de Janeiro"},{"ascii_name":"Riyadh"},{"ascii_name":"Rome"},{"ascii_name":"Rawalpindi"},{"ascii_name":"Rabat"},{"ascii_name":"Recife"},{"ascii_name":"Ra's Bayrut"},{"ascii_name":"Rajkot"}]

使用以下代码创建:

while($row = $all_cities->fetch_array())
{
 $myArray["ascii_name"] = $row["ascii_name"];
 $returnArray[] = $myArray;
}
echo json_encode($returnArray);

现在我正在使用Volley任务将其加载到我的Android应用中。在onResponse方法中,我想获取每个城市名称,并使用ArrayList<String>循环将其加载到for。这是我的代码,但由于sJSONObject而不是JSONArray,因此无法使用。

@Override
        public void onResponse(String s) {
            try {
                    JSONObject jsonObject = new JSONObject(s);
                for (int i = 0; i < jsonObject.length(); i++) {
                    JSONObject a = jsonObject.getJSONObject(i);
                    ....... more code which isn't relevant 
                }

2 个答案:

答案 0 :(得分:2)

而不是

    JSONObject jsonObject = new JSONObject(s);

使用

    JSONArray jsonArray = new JSONArray(s);

另外我认为你在Volley中使用StringRequest。在Volley中切换到JSONObjectRequest。

答案 1 :(得分:0)

JSONArray jsonArray = new JSONArray(s);
for (int i = 0; i < jsonArray.length(); i++) {
   JSONObject jsonObject = jsonArray.getJSONObject(i);

} 

但请确保您拥有正确的JSON响应。你可以在解析它之前使用Log.d打印你的json来做到这一点。