2009-02-16 15 views
80

Birisi bana 2 JSON ayrıştırıcısı arasındaki farkın ne olduğunu söyleyebilir mi? https://github.com/douglascrockford/JSON-js/blob/master/json2.jsjson.js ve json2.js arasındaki fark

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

I 2007-04-13 bir JSON dosyası (Bu tür parseJSON gibi yöntemler vardır). Bu yöntemleri herhangi yeni sürümlerde görmüyorum. kodlarına itibaren

+2

Buna geldi herkes için yeni bir dosya burada https://github.com/douglascrockford/JSON-js –

+0

bulabilirsiniz Bu dosyaların ne olduğunu merak ederken, bunları modern tarayıcılarda kullanmanın bir nedeni olmadığını bilin. [GitHub repo] 'dan (https://github.com/douglascrockford/JSON-js): "Geçerli tarayıcılarda [json2.js] hiçbir şey yapmıyor, yerleşik JSON nesnesini tercih ediyor. Bunu kullanmanın bir nedeni yok. Kader, IE8'i desteklemenize zorlamadığı sürece, hiç kimsenin bir daha yapmaması gereken bir şey. – Thunderforge

cevap

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); 
    }; 
} 

Ben parseJSON nedenle yeni sürümü (json2) bile artık bunu kullanmaz, kullanılmıyor sanırım. kodunuzu parseJSON çok kullandığı Ancak eğer sadece bu kod parçası ekleyebilirsiniz yere tekrar çalışır hale getirmek için:

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

Teşekkürler, bu nedenle parseJSON JSON.parse ile değiştirildi mi? Ayrıca, neJSONString hakkında? Bizim mevcut kod bu yöntemlerin bir çok kullanır: Sonra da kod 1 parçasını eklemek boolean.toJSONString() date.toJSONString() number.toJSONString() object.toJSONString() string.toJSONString() –

+0

, Belirttiğiniz tüm değerler Nesnelerdir, bu nedenle hepsi otomatik olarak JSON.stringify kullanacak şekilde dönüştürülecektir. –

+0

Teşekkürler! Bunu deneyeceğim. Yani, bu işlevleri json.js dosyasına ekleyebilir miyim? –

30

here alıntı:

"JSON2.js - Geçen yılın sonlarında Crockford sessizce yeni yayımlanan mevcut API'sini değiştiren JSON API'sinin sürümü. Önemli fark, tek bir temel nesne kullanmasıydı. "

20

Ayrıca json2 dizili dizilerin json2007'den farklı olduğunu fark ettim. json2007 olarak

:

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

:

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

json2 doğrudur. json2007, ilk öğe 0 dizininde yok sayıldı. –