Her er strengen min
{
'user': {
'name': 'abc',
'fx': {
'message': {
'color': 'red'
},
'user': {
'color': 'blue'
}
}
},
'timestamp': '2013-10-04T08: 10: 41+0100',
'message': 'I'mABC..',
'nanotime': '19993363098581330'
}
Her inneholder meldingen et enkelt anførselstegn, som er det samme som anførselstegnet som brukes i JSON. Det jeg gjør er å fylle opp en streng fra brukerinnganger som melding. Så jeg trenger å unnslippe den typen spesielle scenarier som bryter koden. Men annet enn å erstatte strenger, er det noen måte å få dem til å unnslippe, men likevel tillate HTML å behandle dem tilbake til riktig melding?
En JSON-streng må være i doble anførselstegn, i henhold til specs, slik at du ikke trenger å escape '
.
Hvis du må bruke spesialtegn i JSON-strengen, kan du bruke \
som escape.
Se denne listen over spesialtegn som brukes 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 spesifikasjonen, kan forfatteren bruke \'
.
Dette er dårlig fordi:
**For nye lesere, bruk alltid doble anførselstegn for json-strengene dine.
Alle snakker om hvordan man kan unnslippe '
i en '
-sitert streng bokstavelig. Det er et mye større problem her: single-quoted string literals er ikke gyldig JSON. JSON er basert på JavaScript, men det er ikke det samme. Hvis du' skriver et objekt bokstavelig inne i JavaScript-kode, fint; hvis du faktisk trenger JSON, må du bruke ` &".
Med doble anførselstegn trenger du ikke å unnslippe '
. (Og hvis du vil ha en bokstavelig "
i strengen, bruker du \"
.)
angående AlexBs innlegg:
\' Apostrophe or single quote
\" Double quote
escaping enkle anførselstegn er bare gyldig i enkelt anførselstegn json strenger
escaping doble anførselstegn er bare gyldig i dobbelt anførselstegn json strenger
eksempel:
'Bart\'s car' -> valid
'Bart says \"Hi\"' -> invalid