遍历 JSONObject 以创建数组 Java

Looping through JSONObject to Create Array Java

我有一个 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 方法中,我想获取每个城市名称并使用 for 循环将其加载到 ArrayList<String> 中。现在这是我的代码,但是它不会工作,因为 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 
                }
JSONArray jsonArray = new JSONArray(s);
for (int i = 0; i < jsonArray.length(); i++) {
   JSONObject jsonObject = jsonArray.getJSONObject(i);

} 

但请确保您有正确的 JSON 回复。您可以通过在解析之前使用 Log.d 打印 json 来做到这一点。

而不是

    JSONObject jsonObject = new JSONObject(s);

使用

    JSONArray jsonArray = new JSONArray(s);

我还认为您在 Volley 中使用了 StringRequest。在 Volley 中切换到 JSONObjectRequest。