[英]Android ArrayList<String[]> to PHP
我需要我的应用程序将ArrayList<String[]>
发送到php,我可以通过它来调用服务:
ArrayList<String[]> Items = new ArrayList<String[]>();
(...)
JSONObject JSONSend= new JSONObject();
JSONSend.put("Items", Items );
HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000);
HttpResponse response;
HttpPost post = new HttpPost(SERVICE);
post.setHeader("json", JSONSend.toString());
StringEntity se = new StringEntity(JSONSend.toString());
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json"));
post.setEntity(se);
response = client.execute(post);
并在PHP服务上:
$data = file_get_contents('php://input');
$json = json_decode($data);
$Items = $json->{'Items'};
error_log($Items);
和PHP返回此:
[[Ljava.lang.String;@413e2fd0, [Ljava.lang.String;@413a2940, [Ljava.lang.String;@4139df18, [Ljava.lang.String;@4141b5b0, [Ljava.lang.String;@413931c8, [Ljava.lang.String;@41348b40, [Ljava.lang.String;@41393928]
$ ServMade的类型是字符串,那么如何处理数据作为php上的数组? 我想念什么吗?
在android中生成json字符串时尝试以下操作:
JSONObject JSONSend= new JSONObject();
JSONArray ja = null;
JSONArray tmp = new JSONArray();
for(String s[] : Items){
ja = new JSONArray();
for(int i = 0; i<s.length; i++)
ja.put(s[i]);
tmp.put(ja);
}
JSONSend.put("Items", tmp);
这里的问题是,您在字符串数组(String [])上调用.toString()(在Java中),而该字符串没有被覆盖会返回您在JSON中得到的内容:[Ljava.lang.String; @ 413e2fd0]。
不完全了解JSONObject,但我想您应该将ArrayList<String[]>
(因此是字符串数组的数组)转换为其他内容,以便JSONObject正确处理它。
同样,在PHP中,您不必调用$Items = $json->{'Items'};
-可以调用$Items = $json->Items;
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.