【问题标题】:PHP JSON to Java not parsing due to invisible characters由于不可见字符,PHP JSON to Java 无法解析
【发布时间】:2012-11-14 22:48:56
【问题描述】:

我正在将一些 SQL 结果从 PHP 返回到 android。

我将 JSON 响应编码如下:

$json_string = json_encode($rows);
$json_string = str_replace("\\", "", $json_string, $i);
return $json_string;

一旦我将这个回显到 android,我会得到一个字符串,当我放入 JSON 验证器时会给出有效的 JSON 代码。

但是....一旦我尝试将此有效字符串传递到新的 JSONObject 或 JSONArray 中,我会收到无法转换的错误。

我确定这是因为空白不可见字符。

我已使用 Java 中的以下内容将我的 PHP 和 Java 编码为 utf-8 字符集...

BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "utf-8"), 8);

对于 PHP...

header('Content-Type: text/html; charset=utf-8');

但这并没有解决问题。

非常感谢任何帮助。

【问题讨论】:

    标签: java php android json encode


    【解决方案1】:

    那是因为你使用了一个有效的 json 表示

    $json_string = str_replace("\\", "", $json_string, $i);
    

    不要那样做,json_encode 已经生成了一个有效的 json。

    Content-Type 应该是 application/json 仅用于 json 输出。

    【讨论】:

    • 感谢您的快速回复,但我已经做出了您建议的更改,有效的 JSON 字符串仍然不会转换为 JSONArray 或 Object
    • :) 我的意思是你说的json字符串是 valid
    • 我不确定你的意思。该字符串有效,因为我已将其复制并粘贴到 jsonlint 中进行检查。出于某种原因,虽然它不会在 JSONArray() 中接受它
    • 我的意思是 f.ex。 {"a":1,"b":2} 是一个有效的 json 字符串。更新您的问题以包含您尝试提供的样本 JSONObjectJSONArray
    • @EHarpham :正如 pozs 所说,粘贴您正在使用的 JSON 字符串,以便我们看到它。此外,发布您用于解析字符串的代码和显示失败位置的 logcat 错误。
    猜你喜欢
    • 2015-03-27
    • 2020-01-25
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多