2013-05-06 154 views
0

我正在编写一个android应用程序,它与Web服务进行交互以获取数据。 Web服务使用PHP编写,我写了一个使用AsyncTask获取数据的库,问题在于类只接受JSONObject。我的大多数服务都只返回一个JSONObject,有一个返回一个json数组。返回JSON对象而不是JSONArray

$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

尝试

$array = array("result" => $array); 
echo json_encode($array); 
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); 
} 
相关问题