我有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
。这是我的代码,但由于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
}
答案 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来做到这一点。