-1

次のphpコードがあります。

$response["information"]   = mysql_fetch_array($result) ;                   
echo json_encode($response);

私のphp文は配列のみを返します。そして、私がやりたいのは、Androidでその配列の要素を読み取ることです。そのため、次のコードを書きましたが、機能していないようです:

Date_Queries date_info_query = new Date_Queries();
            json = date_info_query.getDateInformation(uid_request,is_your_request);

            if (json.getString("result_code") != null) { 

                // Result Code = 0 --> Succesfully Select
                if (json.getString("result_code").equals("0")){ 

                    JSONArray information = json.getJSONArray("information");
                    JSONObject jobj = information.getJSONObject(0);

                    status       = jobj.getString("status");
                    return 0;
                }
            }
4

1 に答える 1

1

全体像がわからないため、コードの何が問題なのかを知る方法はありません。あなたが提供した断片は、私たちに部分的な写真を残します。とはいえ、私たちができることは次のとおりです。

1.) Date_Queries() オブジェクトを構成するものを示します。リクエストはどのように行われていますか?等。

2.) $response オブジェクトの構造を示してください。

3.) 解析を試みる前に、Java 要求の結果をコンソールに出力します。正しいことを確認します。

4.) Java を try/catch で囲み、スタック トレースを出力して、あらゆる種類のエラーをより適切に評価できるようにします。

5.) result_code を設定している場所と、その他の考えられる応答を教えてください。

6.) 関連するすべてのコードを表示してください

7.) 関連するすべてのコードを表示してください

8.) 補足として、自分が何をしているのかわからない限り、常に php で単一引用符を使用する必要があります...$response['information'] = ...

編集:


以下のコメントによると、あなたが抱えている問題は、応答をオブジェクトではなく配列として扱っていることです... JSON仕様を読んでください:

http://www.json.org/

配列: [ 1, 2, 3, 4 ] オブジェクト: { "key1":"val1", "key2":"val2" }

代わりにベース オブジェクトをオブジェクトとして扱う場合は、現在スローされている例外のスローを停止する必要があります。

のパラメーターを使用しjson_encode()て、配列内のすべての応答がオブジェクトに変換されるようにすることができます。キーは配列インデックスになります。

json_encode($ob,JSON_FORCE_OBJECT);


問題が応答の最も外側のタイプにない場合は、「情報」などの他の部分が実際に正しいことを確認してください。たとえば、mysql_fetch_arrayFALSE を返すことができます。これは、Android アプリに到達するまでに配列ではないことを意味します。

http://php.net/manual/en/function.mysql-fetch-array.php


最後に、mysql_* 関数の使用をやめ、代わりに PDO を使用する必要があります。

http://us2.php.net/manual/en/book.pdo.php

于 2013-10-30T19:18:21.980 に答える