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": "Here is another"、 "date": "Sun Oct 21、2012"} n

これらは2行の結果です。JSONオブジェクトを繰り返し処理して、両方の「投稿」の文字列を取得したいと思います。これは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が指摘したように、サーバーからの応答は正しい形式ではありません。最初にすべてを2次元配列でラップしてから、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 に答える