遍历 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>
中。现在这是我的代码,但是它不会工作,因为 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
}
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。
我有一个 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>
中。现在这是我的代码,但是它不会工作,因为 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
}
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。