2

JSON経由でAndroidからPHPに長い配列を送信しようとしています。私はJavascriptで同じことをしてうまくいきましたが、JAVAでは混乱します。パラメータを送信すると、長い配列リストが変更されます。

リストを作成する部分です。

JSONArray list = new JSONArray();

for (int i = 0; i < users.size(); i++) {
    list.put(users.get(i).getId());                             
}

これは、データを送信する Java のコードです。

public JSONObject sendFacebookFriendList(JSONArray list) {

    // Building Parameters
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("list", list.toString()));

    JSONParser jsonParser = new JSONParser();
    JSONObject json = jsonParser.getJSONFromUrl(accountServer, params);
    return json;
}

そして、これがPHPでデータを受け取るコードです。

    $list = $_POST['list'];
    $result = array("success" => 1, "list" => $list);

Javascript で送信すると、$list 変数が直接長い配列になっていましたが、JAVA では同じように送信できませんでした。

リストを変更せずに PHP から JAVA に送り返すと、各配列要素の先頭と末尾に \" があることがわかります

したがって、このリスト:

list= ["517565130","523709375","524503024","524620558","524965930", ...

これになります:

"list":"[\"517565130\",\"523709375\",\"524503024\",\"524620558\", ...

したがって、この配列を PHP で解析することはできません。

long/int 配列を適切な方法で送信する方法が見つかりませんでした。誰かがこれを修正したり、別の方法を提案したりしていただければ幸いです。

ありがとう

4

1 に答える 1

3

問題を解決しました。私がスキップしたのは、android部分でエンコードされたjson配列のデコードでした。したがって、投稿されたデータを取得した後、次のようにデコードする必要があります。

$list = $_POST['list'];

$obj = json_decode($list);

そして、$obj を配列として使用できます。

于 2013-02-15T17:33:17.537 に答える