奇怪的JSON.toString()格式PHP到Android

时间:2012-08-30 04:12:45

标签: php json

我只是一个简单的人,通过从Android传递JSON,我遇到了一个奇怪的问题。

为了更好地理解JSON如何在PHP和Android之间工作,我开始创建了一个Json(OK)将它传递给PHP并回显完全相同的文件 - 只是为了看看会发生什么。

问题是传出的JSON.toString()如下: {"死亡年龄":32.5,"敌人":" Darius","战斗":[" Issus&#34 ;,"阿贝拉&#34],"死亡": - 323}

但是返回的JSON.toString()是: {\" Age at Death \":32.5,\" Enemy \":\" Darius \",\" Battles \&# 34;:[\"伊苏斯\" \"阿贝拉\&#34],\"死亡\": - 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;

?>

1 个答案:

答案 0 :(得分:2)

这是因为在php中启用了魔术引号选项。

IIRC目前已被弃用,实际上不建议使用(因为它毫无意义)