0

目前,我正在从 Android 应用程序中调用 JSON 提要(来自 URL)。调用这个 URL 没有问题,但是我的 JSON 输出有一个非常烦人的问题。昨天我的 JSON 工作正常,但是当我今天调用它时,我收到一个错误,我的字符串无法转换为 JSON 对象。

我将结果打印到控制台,JSON 字符串看起来很好。

{"message":{"success":false,"error":22}}

但是,使用 substring() 方法仅获取字符串的第一个字符,输出为:

·

我假设这是一个编码问题,但我将以下标头提供给我的 JSON 提要:

content-type: application/json; charset=utf-8

我正在使用 Yii 框架方法 CJSON::encode() 将数据编码为 JSON。它一直对我有用,直到今天早上。我将所有编码设置为 utf-8,但无济于事。

我还从我的浏览器调用了 JSON 提要,复制了 JSON 并使用了在线 JSON 验证器,它在第一行给出了“无效 JSON”结果,即“{”括号。我删除了括号并手动添加了它,再次验证了 JSON,验证器给出了“有效的 JSON”结果。

4

1 回答 1

3

?>您是否在所有自定义 PHP 文件上使用 PHP 结束标记?

如果是这样,请删除结束标记。它在 PHP 中是可选的。并确保 PHP 打开标记<?php始终从文件顶部开始,在您的类/模型/控制器中没有任何空格。

他们创建了这种特殊字符,因为在结束标记之后,您放置的任何内容都会输出到客户端。并非所有 PHP 编辑器都显示特殊字符,它们可能只显示一些空格。

<?php
    echo "Hello, World,";

?>
__//Here is a special character, but editor unable to display it.

一种调试方法是......使用ob_start() ob_end_clean()

  • 只需ob_start() 在前面的脚本上添加...即添加到 index.php

  • 并在CJSON::encode() 使用清洁缓冲区之前ob_end_clean()

于 2012-10-18T11:27:11.320 回答