【问题标题】:Looping through JSONObject to Create Array Java循环通过 JSONObject 创建数组 Java
【发布时间】:2016-02-26 01:28:54
【问题描述】:

我有一个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而不是JSONObject,所以不需要转换它。

标签: java android json arraylist jsonobject


【解决方案1】:

代替

    JSONObject jsonObject = new JSONObject(s);

使用

    JSONArray jsonArray = new JSONArray(s);

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

【讨论】:

    【解决方案2】:
    JSONArray jsonArray = new JSONArray(s);
    for (int i = 0; i < jsonArray.length(); i++) {
       JSONObject jsonObject = jsonArray.getJSONObject(i);
    
    } 
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-27
      • 2019-08-11
      • 1970-01-01
      • 2017-03-21
      • 2018-06-12
      • 1970-01-01
      • 2019-07-20
      • 2019-06-07
      相关资源
      最近更新 更多