1

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でデータを配列として処理するにはどうすればよいですか?私は何かが足りないのですか?

4

2 に答える 2

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);
于 2012-05-03T14:34:39.983 に答える
2

ここでの問題は、文字列の配列(String [])で.toString()(Java内)を呼び出すことです。これは、オーバーライドされていない場合でも、JSONで取得したもの[Ljava.lang.String;@413e2fd0]を正確に返します。

ArrayList<String[]>JSONObjectは正確にはわかりませんが、JSONObjectが正しく処理するには、(文字列の配列の配列を)別の何かに変換する必要があると思います。

また、PHPでは、を呼び出す必要はありません。を呼び出してもかまいませ$Items = $json->{'Items'};$Items = $json->Items;

于 2012-05-03T14:31:34.320 に答える