0

我想从 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 中做到这一点?

4

2 回答 2

0

尝试这个 -

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);
于 2012-10-22T06:22:33.840 回答
0

您可以将输出包装在 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);
于 2012-10-22T06:23:10.780 回答