2009-02-16 9 views
80

के बीच अंतर कोई मुझे बता सकता है कि 2 JSON पार्सर्स के बीच क्या अंतर है?json.js और json2.js

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

आप नई फ़ाइल यहाँ https://github.com/douglascrockford/JSON-js –

+0

किसी के लिए, जो इस के लिए आया था पा सकते हैं सवाल यह है कि इन फाइलों के बारे में क्या सोच रहा है, जानते हैं कि आधुनिक ब्राउज़र में उनका उपयोग करने का कोई कारण नहीं है। [गिटहब रेपो] से (https://github.com/douglascrockford/JSON-js): "वर्तमान ब्राउज़र पर, [json2.js] अंतर्निहित JSON ऑब्जेक्ट को पसंद करते हुए कुछ भी नहीं करता है। इसका उपयोग करने का कोई कारण नहीं है फ़ाइल जब तक भाग्य आपको IE8 का समर्थन करने के लिए मजबूर नहीं करता है, जो ऐसा कुछ है जिसे किसी को भी फिर से करना नहीं चाहिए। " – Thunderforge

उत्तर

56

उनके कोड से:

// 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

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

+0

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

+0

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

30

here का हवाला देते हुए:

"JSON2.js - पिछले साल के अंत Crockford चुपचाप एक नया जारी किया अपने जेएसओएन एपीआई का संस्करण जिसने अपने मौजूदा एपीआई को बदल दिया। महत्वपूर्ण अंतर यह था कि यह एक मूल वस्तु का उपयोग करता था। "

20

मैंने यह भी देखा कि json27 से अलग json2 स्ट्रिंग एरे अलग-अलग हैं।

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"]. 
+3

json2 सही है। जेसन2007 इंडेक्स 0 पर पहले तत्व को अनदेखा करना गलत था। –