Why use CJSON encode when we have json_encode

不羁的心 提交于 2019-12-18 18:51:19

问题


I am building an API for a website using Yii. I know that there is a utility class called CJson and has a function called encode.

As far as I know there are additional parameters that can be customized in the native json_encode function like the JSON_NUMERIC_CHECK which is really useful. It creates

{
    "id": 17
}

instead of Yii's CJSON encode which makes the '17' a string.

{
    "id": "17"
}

So my question is whether there is any reason I should use CJSON encode instead of the built in PHP function json_encode ?


回答1:


Only thing I can think minimum php version support.

Yii support php 5.1 as minimum version See Yii Installation Page . While json_encode/json_decode introduced in php 5.2. So It can be a reason for Yii having a library for CJson.




回答2:


This question is old. I am working with Yii 1.4, PHP 5.4.

The difference i found was 'json_encode' encodes only class properties, while as 'CJSON::encode' encodes only properties listed at the class documentation using @property annotation... This is true at least for CActiveRecord




回答3:


I realise this is an old topic, but wanted to add another reason.

By doing all JSON encoding through a helper class like CJSON you can override default behavior. For example you can use it to add a token to prevent JSON hijacking.




回答4:


In addition to @kuldeep.kamboj, I should say CJSON::encode will treat that 17 as an integer if you define the data type of the value like this:

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

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

// $jsonString will be:
{
    "id": 17
}


来源:https://stackoverflow.com/questions/17358159/why-use-cjson-encode-when-we-have-json-encode

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!