Json.js और json2.js के बीच अंतर


87

क्या कोई मुझे बता सकता है कि 2 JSON पार्सर में क्या अंतर है?

https://github.com/douglascrockford/JSON-js/blob/master/json.js
https://github.com/douglascrockford/JSON-js/blob/master/json2.js

मेरे पास 2007-04-13 की JSON फाइल है (इसमें इस तरह के तरीके हैं parseJSON)। मैं इन विधियों को किसी भी नए संस्करण में नहीं देखता।


2
आप नई फ़ाइल यहाँ पा सकते हैं github.com/douglascrockford/JSON-js
डैनियल लिटिल

1
जो कोई भी इस प्रश्न के लिए आया था कि ये फाइलें क्या हैं, यह जानकर कि आधुनिक ब्राउज़रों में इनका उपयोग करने का कोई कारण नहीं है। से GitHub रेपो :। "वर्तमान ब्राउज़र पर, [json2.js] कुछ नहीं करता है, को प्राथमिकता में निर्मित JSON ऑब्जेक्ट वहाँ जब तक भाग्य आप मजबूर इस फ़ाइल का उपयोग करने के लिए IE8, जो कुछ है समर्थन करने के लिए कोई कारण नहीं है कि कोई भी कभी चाहिए फिर से करना होगा। ”
थंडरफॉज

जवाबों:


59

उनके कोड से:

// Augment the basic prototypes if they have not already been augmented.
// These forms are obsolete. It is recommended that JSON.stringify and
// JSON.parse be used instead.

if (!Object.prototype.toJSONString) {
    Object.prototype.toJSONString = function (filter) {
        return JSON.stringify(this, filter);
    };
    Object.prototype.parseJSON = function (filter) {
        return JSON.parse(this, filter);
    };
}

मुझे लगता है कि parseJSON अप्रचलित है, इसलिए नया संस्करण (json2) अब भी इसका उपयोग नहीं करता है। हालाँकि यदि आपका कोड parseJSONबहुत अधिक उपयोग करता है तो आप इसे फिर से काम करने के लिए इस कोड के टुकड़े को कहीं जोड़ सकते हैं:

    Object.prototype.parseJSON = function (filter) {
        return JSON.parse(this, filter);
    };

1
धन्यवाद, इसलिए ऐसा प्रतीत होता है कि पार्सनजोन को JSON.parse द्वारा बदल दिया गया है? इसके अलावा, क्या toJSONString के बारे में? हमारा मौजूदा कोड इन विधियों का बहुत उपयोग करता है: boolean.toJSONString () date.toJSONString () number.toJSONString () object.toJSONString () string.toJSONString ()

1
फिर कोड का 1 टुकड़ा भी जोड़ें, आपके द्वारा निर्दिष्ट सभी मूल्य ऑब्जेक्ट हैं, इसलिए वे सभी JSON.stringify का उपयोग करने के लिए स्वचालित रूप से परिवर्तित हो जाएंगे।
लुका मटिस

धन्यवाद! मैं एक बार इसका प्रयास करूँगा। तो, क्या मैं इन कार्यों को json.js फ़ाइल में जोड़ सकता हूँ?

"अप्रचलित" - निरपेक्ष या अप्रचलित?
एरिक

84
"अप्रचलित" - जब यह निश्चित रूप से अप्रचलित हो।
द्वितीबरबनल

31

यहाँ उद्धृत :

"JSON2.js - पिछले साल के अंत में क्रॉकफोर्ड ने चुपचाप अपने JSON API का एक नया संस्करण जारी किया, जिसने उनके मौजूदा API को बदल दिया। महत्वपूर्ण अंतर यह था कि इसमें एकल आधार ऑब्जेक्ट का उपयोग किया गया था।"


25

मैंने यह भी देखा कि json2 ने सरणियों को json2007 की तुलना में अलग ढंग से परिभाषित किया है।

Json2007 में:

var array = [];
array[1] = "apple";
array[2] = "orange";
alert(array.toJSONString()); // Output: ["apple", "orange"].

Json2 में:

var array = [];
array[1] = "apple";
array[2] = "orange";
alert(JSON.stringify(array)); // Output: [null, "apple", "orange"].

4
json2 इस मामले में सही है। json2007 को पहले तत्व को अनदेखा करना गलत था सूचकांक 0.
रोब कियोन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.