如果JSON對象中有屬性是包含雙引號當轉換成字符串形式,將自動加上反斜線,詳細請祥看本文
1. 如果JSON對象中有屬性是包含雙引號的,比如 代碼如下: { "description": "25"" } 如果轉換成字符串形式,將自動加上反斜線,變為"25"", 然後傳遞給REST API,保存到MongoDB中。 此時如果使用MongoDB的shell顯示該數據,為"25"", 正確。 2. 但是如果用C++ driver讀取這個值是,則得到"25"", 因此如果將它直接返回到浏覽器端,用jQuery.parseJSON()來解析就會報錯。 C++段序列化成字符串的時候需要判斷一下,將"替換成". 代碼如下: void string_to_json_string(std::string const& str, std::string & json_str) { std::stringstream ss; for (size_t i = 0; i < str.length(); ++i) { if (str[i] == '"') { ss << '' << '"'; } else { ss << str[i]; } } json_str = ss.str(); } 3. 如果JavaScript對"25""調用jQuery.parseJSON()之後,反斜線已經消失,又變為"25"". 如果再次對該屬性值調用jQuery.pareseJSON則又會出錯。 JavaScript必須寫代碼防止錯誤: 代碼如下: removeDoubleQuotes: function(str) { return str.replace(""", """); }, 這就是雙引號在JSON中的輪回。夠麻煩吧,要小心點。