JSON:真值来自引用

时间:2012-06-18 12:47:15

标签: php json sencha-touch-2

我想为Sencha-Touch应用程序输出嵌套的JSON数组,我必须发信号通知叶子节点。

Heres是正确的语法:

  {
      "text": "Random",
      "leaf": true
  }

我从服务器端用PHP创建我的数组,这里是我添加叶信息的行:

$myRow['leaf'] = 'true';     

不幸的是,在json编码我的数组之后输出并不那么简单:

{
    "text": "Random",
    "leaf":"true"
}

true 周围的引号有问题,因为Sencha Touch无法识别布尔值。

我在我的PHP文件中尝试了 true 周围没有引号,但后来我得到了

  

“leaf”:“1”

在JSON回调中......

我尝试了其他一些技巧但总是同样的问题。

有人有同样的问题吗?

提前谢谢。

4 个答案:

答案 0 :(得分:3)

适用于

$myRow['leaf'] = true;

但我使用utf8_encode()因此将true更改为“1”。

答案 1 :(得分:2)

你得到string为真,因为它是php中的一个字符串...使用布尔值

$myRow['leaf'] = true; 

答案 2 :(得分:0)

如果我记得这是php的版本中的一个错误< 5.2:

http://www.php.net/manual/en/function.json-encode.php#107968

只需尝试:

$jsonencodedstring = str_replace('"true"', 'true', $jsonencodedstring);

答案 3 :(得分:0)

array_walk_recursive($array, function(&$item, $key){
    if(!mb_detect_encoding($item, 'utf-8', true)) {
            $item = utf8_encode($item);
    }
});

检查 if(!mb_detect_encoding($ item,' utf-8',true))条件,这是上述问题的解决方案,可能有助于某人:)