我正在使用Yii为网站构建API。我知道有一个名为CJson的实用程序类,它有一个名为encode的函数。
据我所知,还有其他参数可以在原生json_encode函数中自定义,如JSON_NUMERIC_CHECK,这非常有用。它创建了
{
"id": 17
}
而不是Yii的CJSON编码,它使'17'成为一个字符串。
{
"id": "17"
}
所以我的问题是我是否应该使用CJSON编码而不是内置的PHP函数json_encode? p>
答案 0 :(得分:12)
我唯一能想到的最低PHP版本支持。
Yii支持php 5.1作为最低版本请参阅Yii Installation Page。而json_encode / json_decode在php 5.2中引入。所以这可能是Yii拥有CJson库的原因。
答案 1 :(得分:4)
这个问题很老了。我正在使用Yii 1.4,PHP 5.4。
我发现的差异是'json_encode'只编码类属性,而'CJSON :: encode'只编码使用@property注释在类文档中列出的属性...至少对于CActiveRecord来说这是真的
答案 2 :(得分:4)
我意识到这是一个古老的话题,但又想补充其他原因。
通过像CJSON这样的辅助类执行所有JSON编码,您可以覆盖默认行为。例如you can use it to add a token to prevent JSON hijacking。
答案 3 :(得分: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
}