循环通过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);