解析JSON文档时出错

时间:2012-10-18 10:38:54

标签: php android json yii

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

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

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

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

·

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

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

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

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

1 个答案:

答案 0 :(得分:2)

您是否在所有自定义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()

  • 清理缓冲区之前