-2

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

这是正确的语法:

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

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

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

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

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

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

我尝试在我的PHP 文件中不加引号,但后来我得到了

“叶子”:“1”

在 JSON 回调中...

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

有人有同样的问题吗?

先感谢您。

4

4 回答 4

3

它适用于

$myRow['leaf'] = true;

但我正在使用utf8_encode()所以它变成了true“1”。

于 2012-10-22T13:42:23.160 回答
2

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

$myRow['leaf'] = true; 
于 2012-06-18T12:49:09.327 回答
0

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

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

只需尝试:

$jsonencodedstring = str_replace('"true"', 'true', $jsonencodedstring);
于 2012-06-18T12:57:01.967 回答
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))条件,这是上述问题的解决方案,可能会对某人有所帮助:)

于 2014-10-14T09:13:32.867 回答