JSON dizesini güvenli bir şekilde nesneye dönüştürme

Bir JSON veri dizesi verildiğinde, bu dizeyi güvenli bir şekilde nasıl bir JavaScript nesnesine dönüştürebilirsiniz?

Açıkçası bunu güvenli olmayan bir şekilde ... gibi bir şeyle yapabilirsiniz.

var obj = eval("(" + json + ')');

...ancak bu bizi json dizesinin başka kodlar içermesine karşı savunmasız bırakır, ki bu da basitçe eval yapmak için çok tehlikeli görünüyor.

Edit: Bu cevap IE < 7 içindir, modern tarayıcılar için Jonathan'ın yukarıdaki cevabını kontrol edin.

Düzenleme: Bu cevap güncelliğini yitirmiştir ve Jonathan'ın yukarıdaki cevabı (JSON.parse(jsonString)) artık en iyi cevaptır.

JSON.org, Javascript için 4 farklı dil de dahil olmak üzere birçok dil için JSON ayrıştırıcılarına sahiptir. Sanırım çoğu insan json2.js'yi kendi goto uygulamaları olarak kabul edecektir.

Yorumlar (3)

Bunu yapmanın diğer yollarından emin değilim ama işte Prototype (JSON tutorial)'da nasıl yapacağınız.

new Ajax.Request('/some_url', {
  method:'get',
  requestHeaders: {Accept: 'application/json'},
  onSuccess: function(transport){
    var json = transport.responseText.evalJSON(true);
  }
});

argüman olarak true ile evalJSON() çağrılması gelen dizeyi sterilize eder.

Yorumlar (0)

Eğer jQuery kullanıyorsanız, sadece $.getJSON(url, function(data) { }); da yapabilirsiniz.

Daha sonra data.key1.something, data.key1.something_else gibi şeyler yapabilirsiniz.

Yorumlar (1)