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'來手動轉義字符串' –