Aqui está o meu fio
{
'user': {
'name': 'abc',
'fx': {
'message': {
'color': 'red'
},
'user': {
'color': 'blue'
}
}
},
'timestamp': '2013-10-04T08: 10: 41+0100',
'message': 'I'mABC..',
'nanotime': '19993363098581330'
}
Aqui a mensagem contém uma única aspas, que é a mesma que é utilizada no JSON. O que eu faço é preencher uma string a partir das entradas do usuário, como a mensagem. Então, eu preciso escapar desses tipos de cenários especiais que quebram o código. Mas além de substituir a string, existe alguma maneira de fazê-los escapar mas ainda permitir que o HTML os processe de volta para a mensagem correta?
Uma string JSON deve ser citada duas vezes, de acordo com as especificações, para que você não't precise escapar '
.
Se você tiver que usar um caractere especial na sua string JSON, você pode escapar dele usando o caractere `\'.
Veja esta lista de caracteres especiais utilizados no JSON :
\b Backspace (ascii code 08)
\f Form feed (ascii code 0C)
\n New line
\r Carriage return
\t Tab
\" Double quote
\\ Backslash character
No entanto, mesmo que seja totalmente contrário às especificações, o autor poderia utilizar \'
.
Isto é **muito*** porque :
Para novos leitores, use sempre aspas duplas para as suas cordas json.
Todos estão falando sobre como escapar de '
em uma string citada em '
literalmente. Lá'é uma questão muito maior aqui: **single-quoted string literals are't valid JSON***. JSON é baseado em JavaScript, mas ele'não é a mesma coisa. Se você're escreve um objeto literal dentro do código JavaScript, tudo bem; se você realmente precisa do JSON, você precisa usar "
.
Com cadeias de caracteres duplamente cotadas, você ganhou't precisa escapar do '
. (E se você quisesse um "
literal na string, você'utilizaria \"
.)
a respeito do post de AlexB's:
\' Apostrophe or single quote
\" Double quote
escapando de citações simples só é válido em uma única citação json strings
escapar a aspas duplas só é válido em strings json com aspas duplas
exemplo:
'Bart\'s car' -> valid
'Bart says \"Hi\"' -> invalid