0

私は、データを取得するために Web サービスと対話する Android アプリを作成しています。Web サービスは PHP で記述されており、AsyncTask を使用してデータをフェッチするライブラリを記述しました。問題は、クラスが JSONObject のみを受け入れることです。私のサービスのほとんどは、json 配列を返す特定のサービスがあるため、JSONObject だけを返します。

    $array = array();
    while ($row = mysql_fetch_array($query))
    {
        $array[] = $row;
    }
    echo json_encode($array); 

次のようなものを返します。

 [{ "0":"10","id":"10","1":"17.9409915","lat":"17.9409915","2":"-77.1003625","lon":"-77.1003625"},{"0":"9","id":"9","1":"17.9410143","lat":"17.9410143","2":"-77.1003672","lon":"-77.1003672"}]

返して欲しいのは

      {result:[{"0":"10","id":"10","1":"17.9409915","lat":"17.9409915","2":"-77.1003625","lon":"-77.1003625"},{"0":"9","id":"9","1":"17.9410143","lat":"17.9410143","2":"-77.1003672","lon":"-77.1003672"}]}

私はこれを達成しようとしました:

  echo json_encode("{result: " .$array. "}");

しかし、それはうまくいきません。それは戻ります。

 "{result: Array}"

どうすればこれを達成できますか?

4

2 に答える 2

4

試す

$array = array("result" => $array);
echo json_encode($array);
于 2013-05-06T17:09:21.580 に答える
0

JSONTokener を使用して、応答を適切なハンドラーにディスパッチすることもできます。

public void dispatchResponse(String response) {
    JSONTokener tokener = new JSONTokener(response);

    try {
        Object object = tokener.nextValue();

        if (object instanceof JSONObject) {
            success(new JSONObject(response));
        } else if (object instanceof JSONArray) {
            success(new JSONArray(response));
        } else {
            // Etc...
        }
    } catch (JSONException e) {
        Log.d("debug", "JSONException: "+ e.getMessage());
    }
}

public void success(JSONObject response) {
    Log.d("debug", "JSONObject: "+ response);
}

public void success(JSONArray response) {
    Log.d("debug", "JSONArray: "+ response);
}
于 2013-05-06T18:22:20.607 に答える