İşte benim dizem
{
'user': {
'name': 'abc',
'fx': {
'message': {
'color': 'red'
},
'user': {
'color': 'blue'
}
}
},
'timestamp': '2013-10-04T08: 10: 41+0100',
'message': 'I'mABC..',
'nanotime': '19993363098581330'
}
Burada mesaj, JSON'da kullanılan tırnak işaretiyle aynı olan tek tırnak işareti içerir. Yaptığım şey, mesaj gibi kullanıcı girdilerinden bir dize doldurmak. Bu yüzden, kodu bozan bu tür özel senaryolardan kaçmam gerekiyor. Ancak dize değiştirme dışında, bunları kaçmanın ancak yine de HTML'nin bunları doğru mesaja geri işlemesine izin vermenin herhangi bir yolu var mı?
specs]1'e göre bir JSON dizesi çift tırnaklı olmalıdır, bu nedenle '
'dan kaçmanıza gerek yoktur.
JSON dizenizde özel karakter kullanmanız gerekiyorsa, \
karakterini kullanarak kaçabilirsiniz.
JSON'da kullanılan özel karakterlerin bu listesine bakın:
\b Backspace (ascii code 08)
\f Form feed (ascii code 0C)
\n New line
\r Carriage return
\t Tab
\" Double quote
\\ Backslash character
Ancak, spesifikasyona tamamen aykırı olsa bile, yazar \'
kullanabilir.
Bu kötü çünkü:
Yeni okuyucular için, json dizeleriniz için her zaman çift tırnak işareti kullanın.
Herkes '
tırnaklı bir dize değişmezinde '
kaçışının nasıl yapılacağından bahsediyor. Burada çok daha büyük bir sorun var: Tek tırnaklı dize değişmezleri geçerli JSON değildir. JSON JavaScript tabanlıdır, ancak aynı şey değildir. JavaScript kodu içinde bir nesne değişmezi yazıyorsanız, sorun yok; gerçekten JSON'a ihtiyacınız varsa, "
kullanmanız gerekir.
Çift tırnaklı dizelerde, '
işaretinden kaçmanız gerekmez. (Ve eğer dizgide gerçek bir "
istiyorsanız, \"
kullanırsınız).
AlexB'nin yazısıyla ilgili olarak:
\' Apostrophe or single quote
\" Double quote
tek tırnaktan kaçış yalnızca tek tırnaklı json dizelerinde geçerlidir
çift tırnaktan kaçış yalnızca çift tırnaklı json dizelerinde geçerlidir
Örnek:
'Bart\'s car' -> valid
'Bart says \"Hi\"' -> invalid