2012-05-03 60 views
1

我需要我的應用程序發送ArrayList<String[]>到PHP,我有這樣調用服務:的Android的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的類型是字符串,所以我該如何照顧第e數據作爲一個數組在PHP?我錯過了什麼嗎?

回答

3

嘗試在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); 
+0

這看起來應該正常工作:-) – shadyyx

+0

我用「JSONSend.put(」Items「,tmp));」相反,它的工作,因爲我想,謝謝 – Joaolvcm

2

這裏的問題是,你在一個字符串數組(字符串[])上調用.toString()(在Java內),而不是覆蓋返回正是你得到的JSON:[Ljava.lang.String; @ 413e2fd0。

不知道確切的JSONObject,但我想你應該將ArrayList<String[]>(所以字符串數組的數組)轉換爲不同的JSONObject來正確處理它。

此外,在PHP中,您不必撥打$Items = $json->{'Items'}; - 撥打$Items = $json->Items;即可。

+0

@ oneilse14他直接沒有,但我是客串:: JSONObject的放呢。 – shadyyx

相關問題