循环通过JSONObject创建Java数组

循环通过JSONObject创建Java数组,java,android,json,arraylist,jsonobject,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($

我有一个
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
。这是我现在的代码,但是它不起作用,因为
s
JSONObject
而不是
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 
                }
@覆盖
公共void onResponse(字符串s){
试一试{
JSONObject JSONObject=新的JSONObject;
for(int i=0;i
JSONArray JSONArray=新的JSONArray;
for(int i=0;i
但请确保您有正确的JSON响应。您可以通过在解析JSON之前使用Log.d打印JSON来做到这一点。

JSONArray JSONArray=new JSONArray;
for(int i=0;i
但请确保您有正确的JSON响应。您可以通过在解析JSON之前使用Log.d打印JSON来做到这一点。

而不是

    JSONObject jsonObject = new JSONObject(s);
使用

另外,我认为您在截击中使用了StringRequest。在截击中切换到JSONObjectRequest。

而不是

    JSONObject jsonObject = new JSONObject(s);
使用


另外,我认为您在截取中使用了StringRequest。在截取中切换到JSONObjectRequest。

您的服务器返回的是
JSONArray
而不是
JSONObject
,因此无需转换它。您的服务器返回的是
JSONArray
而不是
JSONObject
,因此无需转换它。
    JSONArray jsonArray = new JSONArray(s);