2013-06-28 12 views
25

Sto costruendo un'API per un sito Web che utilizza Yii. So che esiste una classe di utilità chiamata CJson e ha una funzione chiamata codifica.Perché utilizzare la codifica CJSON quando abbiamo json_encode

Per quanto ne so, ci sono ulteriori parametri che possono essere personalizzati nella funzione nativa di json_encode come JSON_NUMERIC_CHECK che è veramente utile. Crea

{ 
    "id": 17 
} 

invece della codifica CJSON di Yii che rende il "17" una stringa.

{ 
    "id": "17" 
} 

Quindi la mia domanda è se c'è qualche motivo dovrei usare CJSON codificare al posto del costruito in funzione PHP json_encode?

+0

Molto buona domanda signore. –

risposta

10

L'unica cosa che posso pensare è il supporto minimo per la versione di PHP.

Supporto Yii php 5.1 come versione minima Vedere Yii Installation Page. Mentre json_encode/json_decode è stato introdotto in php 5.2. Quindi può essere una ragione per Yii avere una libreria per CJson.

4

Questa domanda è vecchia. Sto lavorando con Yii 1.4, PHP 5.4.

La differenza che ho trovato è stato 'json_encode' codifica solo le proprietà di classe, mentre come 'CJSON :: encode' codifica solo le proprietà elencati nella documentazione classe utilizzando @property annotazione ... Questo è vero almeno per CActiveRecord

0

Oltre a @ kuldeep.kamboj, dovrei dire CJSON::encode tratterà che 17 come un intero se si definisce l'data type del valore in questo modo:

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

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

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