javascript - Bir JSON anahtar adında hangi karakterler geçerli/geçersizdir?


JavaScript nesneleri veya JSON dizeleri için anahtar isimlerinde yasaklı karakterler var mı? Veya kaçırılması gereken karakterler var mı?

Daha spesifik olmak gerekirse, anahtar isimlerinde "$", "-" ve boşluk kullanmak istiyorum.

Cevap #1

Hayır. Geçerli herhangi bir dize geçerli bir anahtardır. Hatta kaçış karakteri kullanıldığı sürece " bile içerebilir:

{"The \"meaning\" of life":42}

Böyle değerleri, anahtarları nesne alan adlarıyla ilişkilendirmeye çalışan bazı dillere yüklemekte zorluklarla karşılaşma ihtimaliniz belki vardır. Ancak, böyle bir durumu bilen biri değilim.

Cevap #2

JSON verilerinde herhangi bir sorun yaşamamak için aşağıdaki karakterlerin kaçış karakteri ile yazılması gerekir:

  • " (çift tırnak)
  • \ (ters eğik çizgi)
  • tüm kontrol karakterleri gibi \n, \t

JSON Ayrıştırıcı, JSON ile başa çıkmanıza yardımcı olabilir.

Cevap #3

Sayılarla başlayan anahtarlar geçerli olsa da, bazı istem dışı sorunlara yol açabileceğini belirtmek gerekir.

Örnek :

var testObject = {
    "1tile": "test value"
};
console.log(testObject.1tile); // fails, invalid syntax
console.log(testObject["1tile"]; // workaround

Cevap #4

Unicode kod noktaları U+D800 ile U+DFFF arasından kaçınılmalıdır: bunlar UTF-16 vekil çiftleri için ayrılmış olduklarından Unicode'da geçersizdir. Bazı JSON kodlayıcıları/çözücüleri bunları U+FFFD ile değiştirecektir. Örneğin, Go dilinin ve onun JSON kütüphanesinin bunlarla nasıl başa çıktığını inceleyin.

Yani yalnız başına (yerine ikili eşler içinde olmayan) "\uD800" ile "\uDFFF" arasında kalmaktan kaçının.

İlgili makaleler