Temel bir konu hakkında bu kadar çok görüntülenen bir soru üzerinde çok iyi değerlendirilmiş yanlış bilginin varlığı beni dehşete düşürdü.
JSON dizeleri tek tırnak içine alınamaz . Spesifikasyonun çeşitli versiyonları ( Douglas Crockford tarafından orijinal , ECMA versiyonu ve IETF versiyonu ), dizelerin çift tırnakla alıntılanması gerektiğini belirtir. Bu teorik bir konu ya da kabul edilen cevabın önerdiği gibi bir görüş meselesi değildir; tek tırnaklı bir dizeyi ayrıştırmaya çalışırsanız, gerçek dünyadaki herhangi bir JSON ayrıştırıcısı hata verir.
Crockford'un ve ECMA'nın sürümü, noktayı açık bir şekilde netleştirmesi gereken güzel bir resim kullanarak bir dizenin tanımını bile görüntüler:
Güzel resim ayrıca bir JSON dizesindeki tüm meşru kaçış dizilerini listeler:
\"
\\
\/
\b
\f
\n
\r
\t
\u
ardından dört haneli rakam
Burada diğer bazı cevaplardaki saçmalıkların aksine \'
, bir JSON dizesinde asla geçerli bir kaçış dizisi olmadığını unutmayın. Bunun olması gerekmez, çünkü JSON dizeleri her zaman çift tırnaklıdır.
Son olarak, programlı olarak JSON oluştururken karakterlerden kaçmayı düşünmek zorunda kalmamalısınız (tabii ki elle JSON tabanlı bir yapılandırma dosyası düzenlerken de yapacaksınız). Bunun yerine, dilinizin sahip olduğu yerel eşleme, dizi, dize, sayı, boole ve null türlerini kullanarak kodlamak istediğiniz veri yapısını oluşturun ve ardından JSON'a bir JSON kodlama işleviyle kodlayın. Böyle bir işlev muhtemelen JavaScript JSON.stringify
, PHP json_encode
veya Python gibi hangi dili kullandığınıza bağlıdır.json.dumps
. Yerleşik böyle bir işlevselliğe sahip olmayan bir dil kullanıyorsanız, muhtemelen kullanılacak bir JSON ayrıştırma ve kodlama kitaplığı bulabilirsiniz. JSON'a ve JSON'dan bir şeyler dönüştürmek için dil veya kütüphane işlevlerini kullanırsanız, JSON'un kaçan kurallarını bile bilmeniz gerekmez. Buradaki yanlış yönlendirilmiş soru askerin yapması gereken şey budur.