0
JSON文字列に二重引用符を使用して\"
をエスケープすると、パーサーは失敗します。しかし、JSON.stringify
を使用すると、何とか文字列を正しくエスケープすることができます。JSON文字列で二重引用符がサポートされていますか?
二重引用符を正しくエスケープしていないと思われます。より詳細なコードを見てください。
var data = {
"singleQuoteHtml": "<span class='qwer'>content</span>",
"doubleQuoteHtml": "<span class=\"qwer\">content</span>",
"singleQuote": "'hi'",
"doubleQuote": "\"hi\""
};
var dataString = '{"singleQuoteHtml": "<span class=\'qwer\'>content</span>",'
+ '"doubleQuoteHtml": "<span class=\"qwer\">content</span>",'
+ '"singleQuote": "\'hi\'",'
+ '"doubleQuote": "\"hi\"'
+ '}';
function Parse()
{
//Stringify is capable of creating single quotes and double quotes
console.log(JSON.parse(JSON.stringify(data)));
//When I escape double quotes myself the parser fails
//Uncomment to see failure
//console.log(JSON.parse(dataString));
}
<button onclick="Parse();">Parse JSON </button>
なぜ文字列連結を使用して 'dataString'を作成したいのですか?通常のJavaScriptオブジェクトを作成し、 'JSON.stringify()'を使用して 'dataString'を作成しないと、エスケープで発生する可能性のある多くの問題を解決できません。 –
実際のコードはJavaベースです。私にとって利用可能になっているデータは、Javaオブジェクトではなく、単純な古い文字列です。だから私はどのようにこれらの制約をJavaで文字列化するのか分からない。しかし、あなたは正しいかもしれません。おそらく、頭痛の程度が分かれば、頭痛は少なくなるでしょう。 –
Javaでは、 'TestClass'に' String'プロパティを追加し、 'String jsonRawString = objectMapper.writeValueAsString(testObject)'で 'TestClass'を逆シリアル化することで、手動で文字列をエスケープする必要を避けることができます –