Hier ist mein String
{
'user': {
'name': 'abc',
'fx': {
'message': {
'color': 'red'
},
'user': {
'color': 'blue'
}
}
},
'timestamp': '2013-10-04T08: 10: 41+0100',
'message': 'I'mABC..',
'nanotime': '19993363098581330'
}
Hier enthält die Nachricht ein einfaches Anführungszeichen, das mit dem in JSON verwendeten Anführungszeichen übereinstimmt. Was ich tue, ist eine Zeichenkette aus Benutzereingaben wie der Nachricht zu füllen. Also muss ich diese Art von speziellen Szenarien, die den Code bricht zu entkommen. Aber andere als Zeichenfolge ersetzen, gibt es eine Möglichkeit, um sie zu entkommen, aber immer noch erlauben HTML, um sie zurück zu der richtigen Nachricht zu verarbeiten?
Eine JSON-Zeichenkette muss gemäß den specs in Anführungszeichen gesetzt werden, so dass Sie keine Escape-Zeichen verwenden müssen.
Wenn Sie in Ihrer JSON-Zeichenkette ein Sonderzeichen verwenden müssen, können Sie es mit dem Zeichen "escapen".
Siehe diese Liste der in JSON verwendeten Sonderzeichen:
\b Backspace (ascii code 08)
\f Form feed (ascii code 0C)
\n New line
\r Carriage return
\t Tab
\" Double quote
\\ Backslash character
Aber auch wenn es der Spezifikation völlig widerspricht, könnte der Autor \'
verwenden.
Dies ist schlecht, weil :
Für neue Leser, verwenden Sie immer doppelte Anführungszeichen für Ihre JSON-Strings.
Alle reden darüber, wie man '
in einem '
-quoted string literal entkommen kann. Es gibt hier ein viel größeres Problem: einzeln in Anführungszeichen gesetzte String-Literale sind kein gültiges JSON. JSON basiert zwar auf JavaScript, aber es ist nicht dasselbe. Wenn Sie ein Objektliteral in JavaScript-Code schreiben, ist das in Ordnung; wenn Sie tatsächlich JSON benötigen, müssen Sie "
verwenden.
Bei Strings in doppelten Anführungszeichen brauchen Sie das "'" nicht zu entschlüsseln. (Und wenn Sie ein wörtliches """ in der Zeichenkette haben wollen, würden Sie """ verwenden).
zu AlexB's Beitrag:
\' Apostrophe or single quote
\" Double quote
das escaping von einfachen Anführungszeichen ist nur in einfach quotierten json-Strings gültig Die Escape-Funktion für doppelte Anführungszeichen ist nur in json-Zeichenfolgen mit doppelten Anführungszeichen gültig.
Beispiel:
'Bart\'s car' -> valid
'Bart says \"Hi\"' -> invalid