2013-06-28 8 views
25

है तो मैं CJSON एन्कोड का उपयोग क्यों करता हूं मैं वाईआई का उपयोग कर वेबसाइट के लिए एक एपीआई बना रहा हूं। मुझे पता है कि सीजेसन नामक उपयोगिता वर्ग है और इसमें एन्कोड नामक एक फ़ंक्शन है।जब हमारे पास json_encode

जहां तक ​​मुझे पता है कि अतिरिक्त पैरामीटर हैं जिन्हें देशी json_encode फ़ंक्शन में JSON_NUMERIC_CHECK जैसे अनुकूलित किया जा सकता है जो वास्तव में उपयोगी है। यह

{ 
    "id": 17 
} 

वाईआई के सीजेएसओएन एनकोड के बजाय बनाता है जो '17' स्ट्रिंग बनाता है।

{ 
    "id": "17" 
} 

तो मेरे सवाल तो ऐसा कोई कारण मैं के बजाय CJSON एनकोड का उपयोग करना चाहिए है कि क्या है PHP समारोह json_encode में बनाया गया?

+0

बहुत अच्छा सवाल श्रीमान। –

उत्तर

10

केवल एक चीज जो मैं न्यूनतम PHP संस्करण समर्थन सोच सकता हूं।

वाईआई समर्थन PHP 5.1 न्यूनतम संस्करण के रूप में Yii Installation Page देखें। जबकि json_encode/json_decode php 5.2 में पेश किया गया। इसलिए यह वाईआई के लिए सीजेसन के लिए पुस्तकालय रखने का एक कारण हो सकता है।

4

यह सवाल पुराना है। मैं वाईआई 1.4, PHP 5.4 के साथ काम कर रहा हूं।

अंतर मैंने पाया 'json_encode' जबकि 'CJSON :: एनकोड' के रूप में केवल वर्ग गुण encodes, था @property एनोटेशन का उपयोग कर केवल वर्ग प्रलेखन में सूचीबद्ध गुण encodes ... यह कम से कम CActiveRecord

के लिए
4
सच है

मुझे एहसास है कि यह एक पुराना विषय है, लेकिन एक और कारण जोड़ना चाहता था।

सीजेएसओएन जैसी सहायक श्रेणी के माध्यम से सभी JSON एन्कोडिंग करके आप डिफ़ॉल्ट व्यवहार को ओवरराइड कर सकते हैं। उदाहरण के लिए you can use it to add a token to prevent JSON hijacking

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 
} 
संबंधित मुद्दे