Json.js ve json2.js arasındaki fark


87

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/json.js
https://github.com/douglascrockford/JSON-js/blob/master/json2.js

2007-04-13 tarihli bir JSON dosyam var (Gibi yöntemleri var parseJSON). Bu yöntemleri yeni sürümlerin hiçbirinde görmüyorum.


2
Yeni dosyayı burada bulabilirsiniz github.com/douglascrockford/JSON-js
Daniel Little

1
Bu dosyaların ne olduğunu merak ederek bu soruya gelenler için, onları modern tarayıcılarda kullanmak için bir neden olmadığını bilin. Gönderen GitHub repo :. "Mevcut tarayıcılarda, [json2.js] tercih şey yapmaz yerleşik JSON nesnesi kader sizi zorlayan sürece şeydir IE8, desteklemek için bu dosyayı kullanmak için hiçbir neden yok ki hiç kimse should tekrar yapmalıyım. "
Thunderforge

Yanıtlar:


59

Kodlarından:

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

Sanırım parseJSON artık kullanılmıyor, bu nedenle yeni sürüm (json2) artık onu kullanmıyor bile. Bununla birlikte, kodunuz parseJSONçok fazla kullanıyorsa , tekrar çalışması için bu kod parçasını bir yere ekleyebilirsiniz:

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

1
Teşekkürler, öyle görünüyor ki parseJSON yerine JSON.parse geldi? Ayrıca, toJSONString ne olacak? Mevcut kodumuz şu yöntemlerin çoğunu kullanıyor: boolean.toJSONString () date.toJSONString () number.toJSONString () object.toJSONString () string.toJSONString ()

1
Ardından 1. kod parçasını da ekleyin, belirttiğiniz tüm değerler Nesnelerdir, bu nedenle hepsi JSON.stringify'ı kullanmak üzere otomatik olarak dönüştürülecektir.
Luca Matteis

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

"eski" - mutlak mı yoksa eski mi?
Eric

84
"modası geçmiş" - kesinlikle geçerliliğini yitirdiğinde.
davidtbernal

31

Burada alıntı yapmak :

"JSON2.js - Geçen yılın sonlarında Crockford, JSON API'sinin mevcut API'sinin yerini alan yeni bir sürümünü sessizce yayınladı. Önemli fark, tek bir temel nesne kullanmasıydı."


25

Ayrıca json2'nin dizileri json2007'den farklı şekilde dizgeleştirdiğini fark ettim.

JSON2007'de:

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

Json2'de:

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

4
json2 bu durumda doğrudur. json2007, 0 dizinindeki ilk öğeyi yok saymakla yanlıştı.
Rob Kinyon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.