JSON biçimi, tek tırnakların çıkarılmaması gerektiğini belirttiğinden, çoğaltılmış tek bir alıntı varsa, çoğu kitaplık (veya yerel JSON ayrıştırıcısı) başarısız olur. Şimdi bu genellikle bir sorun değildir, çünkü çoğu zaman JSON olarak biçimlendirilmiş bazı verileri getiren bir XHR yaparsınız ve JSON dizginizi içeren, daha sonra ayrıştırabileceğiniz responseText'i kullanırsınız.JSON literal dizesi nasıl kullanılır?
Bu özel durumda, Bir veritabanında metin olarak saklanan bir JSON dizim var ... böylece veritabanı {"property":"value"}
gibi bir şey içeriyor ve bunu sunucu tarafından oluşturulan bir HTML sayfasının parçası olarak çıkarmak istiyorum, böylece bu sayfadaki JavaScript kodu şuna benzer: Şimdi
var x = '{"property":"value"}';
veritabanında JSON dizesi böyle tek tırnak içeriyorsa:
{"property":"val'ue"}
Sonra onu kaçmak gerekir yoksa ben bir dize olarak kullanmak mümkün olmayacak: {"prop":"val\'ue"}
geçerli bir JSON dize sayılmaz neden o zaman
console.clear();
var obj = {prop:"val'ue"};
var str = JSON.stringify(obj);
console.log("JSON string is %s",str);
console.dir(JSON.parse(str)); //No problem here
//This obviously can't work since the string is closed and it causes an invalid script
//console.dir(JSON.parse('{prop:"val'ue"}'));
//so I need to escape it to use a literal JSON string
console.dir(JSON.parse('{"prop":"val\'ue"}'));
soru nedir?
so, 'console.dir (JSON.parse ('{" prop ":" val \' ue "} '))' ile ilgili sorun nedir? Benim için çalışıyor (krom) – mykhal
Doğru işe yaradı, bu sorunun neden bu kadar geçersiz JSON {"prop": "valu \ 'ue"} (şartnameye göre) olduğunu düşündüğüm gibi bir durumda olduğu zaman ihtiyacım vardı bunu dizininize eklemek. Bu zaten kodlanmış bir JSON dizesini yeniden işlemek için beni zorluyor. – SBUJOLD