JSON中雙引號的輪回使用過程中一定要小心
更新時間:2014年03月05日 17:03:08 作者:
如果JSON對象中有屬性是包含雙引號當轉(zhuǎn)換成字符串形式,將自動加上反斜線,詳細請祥看本文
1. 如果JSON對象中有屬性是包含雙引號的,比如
{
"description": "25""
}
如果轉(zhuǎn)換成字符串形式,將自動加上反斜線,變?yōu)?25\"", 然后傳遞給REST API,保存到MongoDB中。
此時如果使用MongoDB的shell顯示該數(shù)據(jù),為"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\""調(diào)用jQuery.parseJSON()之后,反斜線已經(jīng)消失,又變?yōu)?25"". 如果再次對該屬性值調(diào)用jQuery.pareseJSON則又會出錯。
JavaScript必須寫代碼防止錯誤:
removeDoubleQuotes: function(str) {
return str.replace("\"", "\\\"");
},
這就是雙引號在JSON中的輪回。夠麻煩吧,要小心點。
復(fù)制代碼 代碼如下:
{
"description": "25""
}
如果轉(zhuǎn)換成字符串形式,將自動加上反斜線,變?yōu)?25\"", 然后傳遞給REST API,保存到MongoDB中。
此時如果使用MongoDB的shell顯示該數(shù)據(jù),為"25\"", 正確。
2. 但是如果用C++ driver讀取這個值是,則得到"25"", 因此如果將它直接返回到瀏覽器端,用jQuery.parseJSON()來解析就會報錯。
C++段序列化成字符串的時候需要判斷一下,將"替換成\".
復(fù)制代碼 代碼如下:
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\""調(diào)用jQuery.parseJSON()之后,反斜線已經(jīng)消失,又變?yōu)?25"". 如果再次對該屬性值調(diào)用jQuery.pareseJSON則又會出錯。
JavaScript必須寫代碼防止錯誤:
復(fù)制代碼 代碼如下:
removeDoubleQuotes: function(str) {
return str.replace("\"", "\\\"");
},
這就是雙引號在JSON中的輪回。夠麻煩吧,要小心點。
您可能感興趣的文章:
- js使用eval解析json實例與注意事項分享
- java對象序列化與反序列化的默認格式和json格式使用示例
- jquery序列化form表單使用ajax提交后處理返回的json數(shù)據(jù)
- 教你如何使用PHP輸出中文JSON字符串
- JSON.parse()和JSON.stringify()使用介紹
- 直接在JS里創(chuàng)建JSON數(shù)據(jù)然后遍歷使用
- PHP中使用json數(shù)據(jù)格式定義字面量對象的方法
- 使用JSON.parse將json字符串轉(zhuǎn)換成json對象的時候會出錯
- Android中生成、使用Json數(shù)據(jù)實例
- PHP使用json_encode函數(shù)時不轉(zhuǎn)義中文的解決方法
- ASP.NET中MVC使用AJAX調(diào)用JsonResult方法并返回自定義錯誤信息
- 在JavaScript中使用JSON數(shù)據(jù)
相關(guān)文章
Bootstrap入門教程一Hello Bootstrap初識
Bootstrap,來自 Twitter,是目前很受歡迎的前端框架。Bootstrap是基于 HTML5、CSS3和Javascriopt開發(fā)的。這篇文章主要介紹了基于Bootstrap3實現(xiàn)漂亮簡潔的CSS3價格表(精美代碼版),需要的朋友可以參考下2017-03-03kindeditor修復(fù)會替換script內(nèi)容的問題
這里給大家分享的是個人修改的kindeditor的代碼,主要是修復(fù)了一些BUG,添加了些常用功能,推薦給大家,有需要的小伙伴可以參考下。2015-04-04