目前我正在努力从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”结果。
答案 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()