Php JSON:真正的值随引号一起出现
我想为我的Sencha Touch应用程序输出一个嵌套的JSON数组,并且我必须向叶节点发送信号 以下是正确的语法:Php JSON:真正的值随引号一起出现,php,json,sencha-touch-2,Php,Json,Sencha Touch 2,我想为我的Sencha Touch应用程序输出一个嵌套的JSON数组,并且我必须向叶节点发送信号 以下是正确的语法: { "text": "Random", "leaf": true } 我从服务器端用PHP创建数组,下面是添加叶信息的行: $myRow['leaf'] = 'true'; 不幸的是,它不是那么简单,json编码后的输出我的数组是: { "text": "Random", "leaf":"true" } true周围
{
"text": "Random",
"leaf": true
}
我从服务器端用PHP创建数组,下面是添加叶信息的行:
$myRow['leaf'] = 'true';
不幸的是,它不是那么简单,json编码后的输出我的数组是:
{
"text": "Random",
"leaf":"true"
}
true周围的引号有问题,因为Sencha Touch无法识别布尔值
我尝试在PHP文件中不加引号true,但后来我得到了
“叶”:“1”
在JSON回调中
我尝试了一些其他的技巧,但总是遇到同样的问题
有人也有同样的问题
提前谢谢你。你得到的是
字符串,因为它是php中的字符串。。。使用布尔值
$myRow['leaf'] = true;
如果我记得它是php<5.2版本中的一个bug:
只需尝试:
$jsonencodedstring = str_replace('"true"', 'true', $jsonencodedstring);
它与
$myRow['leaf'] = true;
但是我使用的是utf8\u encode()
,所以它将true
改为“1”
检查如果(!mb_detect_encoding($item,'utf-8',true))条件,即上述问题的解决方案,可能会帮助某人:)无法使用布尔值复制:。仔细检查你的代码。你能给我们看看你的json输出代码吗?你是如何将PHP结构转换成json的?您是在使用json_编码还是其他什么?谢谢felix,我找到了为什么我在输出中有“leaf”:“1”。我在数组上执行utf8_encode(),这就是为什么它输出“1”而不是true。我无法回答我的问题,因为我的声望很低(新成员被发现;-),但是:实际上它与$myRow['leaf']=true一起工作;但是我使用的是utf8_encode(),所以它将true改为“1”我学到了一些东西,谢谢:)“我尝试在我的PHP文件中不使用true的引号,但后来我得到了…”看起来除了你felix:-)我遇到了相同的问题到目前为止没有任何解决方案??没有bug(至少不是你的意思)json_decode
仅在PHP5.2.0中引入(有些人可能称之为以前不存在的bug;)。对不起,你说得对。。。我发现了一些我自己的代码。。。json_encode将始终引用它。。。但是,您可以对“true”进行替换以删除引号。
array_walk_recursive($array, function(&$item, $key){
if(!mb_detect_encoding($item, 'utf-8', true)) {
$item = utf8_encode($item);
}
});