2013-06-28 6 views
25

私はYiiを使用してウェブサイトのAPIを構築しています。私は、CJsonというユーティリティクラスがあり、encodeという関数があることを知っています。json_encodeがあるときにCJSONエンコードを使用する理由

本当に便利なJSON_NUMERIC_CHECKのようなネイティブjson_encode関数でカスタマイズできる追加パラメータがあります。 '17'文字列を作るYiiのCJSONエンコードの代わりに

{ 
    "id": 17 
} 

を作成します。

{ 
    "id": "17" 
} 

私の質問は、組み込みのPHP関数json_encodeの代わりにCJSONエンコードを使用する理由があるかどうかです。

+0

非常に良い質問先生を。 –

答えて

10

私は最小限のPHPバージョンのサポートと考えることができるだけです。

Yiiサポートphp 5.1最小バージョンYii Installation Pageを参照してください。 json_encode/json_decodeはphp 5.2で導入されました。だから、YiiがCJson用のライブラリを持っている理由があるかもしれません。

4

この質問は古いです。私はYii 1.4、PHP 5.4で作業しています。 「CJSON ::エンコードは」@propertyアノテーションを使用して、クラスのドキュメントに記載されているプロパティのみをコードして...これは、少なくともCActiveRecord

ため
4
真である間、私が見つけた

違いは、「json_encodeは」唯一のクラスのプロパティをコードしていました

これは古い話題ですが、別の理由を追加したいと思います。

CJSONのようなヘルパークラスを使用してすべてのJSONエンコーディングを行うと、デフォルトの動作をオーバーライドできます。例えば、you can use it to add a token to prevent JSON hijacking。 @ kuldeep.kambojに加えて

0

、私はあなたがこのような値のdata typeを定義した場合CJSON::encodeは整数としてその17を扱いますと言う必要があります。

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

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

// $jsonString will be: 
{ 
    "id": 17 
} 
関連する問題