【问题标题】:How to iterate over multiple JSON responses?如何迭代多个 JSON 响应?
【发布时间】:2012-10-22 06:20:40
【问题描述】:

我想从 PHP 向我的 Android 设备返回多个响应。 在 PHP 中我有类似的东西:

while ($row = mysql_fetch_array($data)) {
    $response["post"] = strip_tags($row["post_text"]);
    $response["date"] = date('D M d, Y', $row["post_time"]);
    echo json_encode($response);
}

在 Logcat 中我得到:

{"tag":"midnightAnnouncements","success":1,"error":0,"post":"这是一个测试公告!","date":"Sun Oct 21, 2012"}{ "tag":"midnightAnnouncements","success":1,"error":0,"post":"这是另一个 ","date":"Sun Oct 21, 2012"}n

这是两行的结果。我想遍历 JSON 对象并获取两个“post”的字符串。这在 Java 中如何实现?

【问题讨论】:

    标签: java php android json


    【解决方案1】:

    您可以将输出包装在 JSON 数组中:

    $output = array();
    
    while ($row = mysql_fetch_array($data)) {
        $response["post"] = strip_tags($row["post_text"]);
        $response["date"] = date('D M d, Y', $row["post_time"]);
    
        $output[] = $response;
    }
    echo json_encode($output);
    

    【讨论】:

      【解决方案2】:

      试试这个 -

      HttpResponse response = httpclient.execute(httppost);
      BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
      String json = reader.readLine();
      JSONArray array = new JSONArray(json);
      String post;
      for (int i = 0; i < array.length(); i++) {
          JSONObject row = array.getJSONObject(i);
          post = row.getString('post');
      }
      

      正如 nneonneo 所指出的,您来自服务器的响应格式不正确。您应该首先将所有内容包装在一个二维数组中,然后回显 json_encoded 版本。

      $i=0;
      while ($row = mysql_fetch_array($data)) {
          $response[$i]["post"] = strip_tags($row["post_text"]);
          $response[$i]["date"] = date('D M d, Y', $row["post_time"]);
          $i++;
      }
      echo json_encode($response);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-01
        • 2019-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-08
        相关资源
        最近更新 更多