1. ホーム

[解決済み】JSON文字列を構築する際に、特殊文字をエスケープする方法は?

2022-04-02 22:27:44

質問

以下は私の文字列です。

{
    'user': {
        'name': 'abc',
        'fx': {
            'message': {
                'color': 'red'
            },
            'user': {
                'color': 'blue'
            }
        }
    },
    'timestamp': '2013-10-04T08: 10: 41+0100',
    'message': 'I'mABC..',
    'nanotime': '19993363098581330'
}    

メッセージにはシングルクォーテーションが含まれていますが、これはJSONで使用されるクォーテーションと同じです。私が行っているのは、メッセージのようなユーザー入力から文字列を作成することである。そのため、このような特殊なシナリオをエスケープする必要があり、コードが破損してしまいます。しかし、文字列の置き換え以外に、これらをエスケープしつつ、HTMLが正しいメッセージに戻るように処理する方法はあるのでしょうか?

どのように解決するのですか?

JSONの文字列は、以下のように二重引用符で囲む必要があります。 スペック のように、エスケープする必要はありません。 ' .

JSONの文字列の中で特殊文字を使用する必要がある場合、それをエスケープするために \ 文字を使用します。

JSONで使用される特殊文字の一覧は、こちらをご覧ください。

\b  Backspace (ascii code 08)
\f  Form feed (ascii code 0C)
\n  New line
\r  Carriage return
\t  Tab
\"  Double quote
\\  Backslash character



しかし、仕様に全く反していても、作者は \' .

これは 悪い というのも

  • スペックに反している
  • JSONの有効な文字列ではありません。

しかし、望むと望まざるとにかかわらず、それは機能するのです。

新しい読者のために、json文字列には常に二重引用符を使用してください。