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 回答