31

我正在使用 Yii 为网站构建 API。我知道有一个名为 CJson 的实用程序类,并有一个名为 encode 的函数。

据我所知,可以在本机 json_encode 函数中自定义其他参数,例如 JSON_NUMERIC_CHECK,这非常有用。它创建

{
    "id": 17
}

而不是 Yii 的 CJSON 编码,它使 '17' 成为一个字符串。

{
    "id": "17"
}

所以我的问题是我是否有任何理由应该使用 CJSON 编码而不是内置的 PHP 函数 json_encode ?

4

4 回答 4

13

只有我能想到的最低 php 版本支持。

Yii 支持 php 5.1 作为最低版本请参阅Yii 安装页面。而 json_encode/json_decode 在 php 5.2 中引入。所以这可能是 Yii 拥有 CJson 库的一个原因。

于 2013-06-28T06:04:16.723 回答
4

这个问题很老了。我正在使用 Yii 1.4、PHP 5.4。

我发现的区别是“json_encode”只编码类属性,而“CJSON::encode”只使用@property 注释对类文档中列出的属性进行编码......至少对于CActiveRecord 是这样

于 2014-01-18T11:50:02.267 回答
4

我意识到这是一个老话题,但想补充另一个原因。

通过像 CJSON 这样的辅助类进行所有 JSON 编码,您可以覆盖默认行为。例如,您可以使用它来添加令牌以防止 JSON 劫持

于 2014-08-29T07:32:17.780 回答
0

除了@kuldeep.kamboj,我应该说,如果你定义这样的值,我CJSON::encode会将其17视为一个整数data type

// PHP
$toBeConverted = array('id' => (int) 17); // or (int) $myInteger

$jsonString = \CJSON::encode($toBeConverted);    

// $jsonString will be:
{
    "id": 17
}
于 2016-02-02T09:12:37.620 回答