我只是一个简单的人,通过从 Android 传递 JSON 来工作,我遇到了一个奇怪的问题。
为了更好地理解 JSON 在 PHP 和 Android 之间的工作方式,我首先创建了一个 Json(OK),将其传递给 PHP 并回显完全相同的文件 - 只是为了看看会发生什么。
问题是传出的 JSON.toString() 如下: {"Age at Death":32.5,"Enemy":"Darius","Battles":["Issus","Arbela"],"Death": -323}
但是返回的 JSON.toString() 是: {\"Age at Death \":32.5,\"Enemy\":\"Darius\",\"Battles\":[\"Issus\",\"Arbela\ "],\"死亡\":-323}
当我尝试从 PHP 读取 Json 时,这会引发错误。(PS:这是我发现的一个问题;可能来源在别处,所以不要让我把你引向错误的轨道)
这是我的代码:
安卓:
private void connectToURL() throws UnsupportedEncodingException {
// TODO Auto-generated method stub
HttpParams httpParams = new BasicHttpParams();
HttpClient client = new DefaultHttpClient(httpParams);
String url = "http://www.this.url.is.correct.php";
List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2);
String hello = myJson.toString();
nameValuePair.add(new BasicNameValuePair("Json", myJson.toString()));
HttpPost request = new HttpPost(url);
request.setEntity(new UrlEncodedFormEntity(nameValuePair));
//ResponseHandler<String> responseHandler = new BasicResponseHandler();
try {
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
String myResponse = EntityUtils.toString(entity);
showResponse(myResponse);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void showResponse(String thisResponse) {
try {
JSONObject newJson = new JSONObject(thisResponse);
viewer02.setText(newJson.toString(2));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这是PHP(没有比这更简单的了):
<?php
$obj = $_POST['Json'];
//$json = json_encode($obj);
//$string = $json->{'enemy'};
echo $obj;
?>