【问题标题】:how to send long array from android to php server如何将长数组从android发送到php服务器
【发布时间】:2013-01-30 23:23:15
【问题描述】:

我尝试通过 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 数组的任何方法。 如果有人可以解决此问题或提出其他方法,我将不胜感激。

谢谢

【问题讨论】:

  • 尝试用ALLOW_BACKSLASH_ESCAPING_ANY CHARACTER配置你的解析器
  • 为什么要将某人的好友列表发送到您自己的服务器?
  • 我现在只允许人们使用 facebook 帐户登录。因此,如果他们有任何朋友已经在使用该应用程序,我也会在我的数据库中将他们设置为朋友。这就是我这样做的原因。并解决了问题,谢谢。

标签: php android json


【解决方案1】:

我解决了这个问题。我跳过的事情是解码在 android 部分编码的 json 数组。所以拿到发布的数据后需要这样解码;

$list = $_POST['list'];

$obj = json_decode($list);

然后我可以使用 $obj 作为数组。

【讨论】:

    猜你喜欢
    • 2012-02-14
    • 2013-12-13
    • 2012-07-19
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多