Her er min streng
{
'user': {
'name': 'abc',
'fx': {
'message': {
'color': 'red'
},
'user': {
'color': 'blue'
}
}
},
'timestamp': '2013-10-04T08: 10: 41+0100',
'message': 'I'mABC..',
'nanotime': '19993363098581330'
}
Her indeholder meddelelsen et enkelt citationstegn, som er det samme som det citationstegn, der anvendes i JSON. Det jeg gør er at udfylde en streng fra brugerinput som f.eks. besked. Så jeg har brug for at undslippe den slags specielle scenarier, som bryder koden. Men bortset fra streng erstatte, er der nogen måde at gøre dem undslippe, men stadig tillade HTML til at behandle dem tilbage til den korrekte besked?
En JSON-streng skal være dobbeltkvoteret i henhold til specs, så du behøver ikke at undslippe '
.
Hvis du skal bruge et specialtegn i din JSON-streng, kan du undslippe det ved hjælp af \
-tegnet.
Se denne liste over specialtegn, der anvendes i JSON :
\b Backspace (ascii code 08)
\f Form feed (ascii code 0C)
\n New line
\r Carriage return
\t Tab
\" Double quote
\\ Backslash character
Men selv om det er helt i strid med specifikationerne, kan forfatteren bruge \'
.
Dette er skidt fordi :
For nye læsere, brug altid dobbelte anførselstegn til dine json-strenge.
Alle taler om, hvordan man undslipper '
i en '
-citated string literal. Der er et meget større problem her: Enkelt citerede strenglitteraler er ikke gyldige JSON. JSON er baseret på JavaScript, men det er ikke det samme. Hvis du skriver en objektliteral inden for JavaScript-kode, er det fint nok; hvis du rent faktisk har brug for JSON, skal du bruge "
.
Med strenge i dobbeltkvote behøver du ikke at undslippe '
. (Og hvis du ville have en bogstavelig "
i strengen, ville du bruge \"
.)
vedrørende AlexB's indlæg:
\' Apostrophe or single quote
\" Double quote
escaping single quotes er kun gyldig i single quoted json strings
escaping double quotes er kun gyldigt i json-strenge med dobbelte anførselstegn
eksempel:
'Bart\'s car' -> valid
'Bart says \"Hi\"' -> invalid