JSON中雙引號(hào)的輪回使用過(guò)程中一定要小心
更新時(shí)間:2014年03月05日 17:03:08 作者:
如果JSON對(duì)象中有屬性是包含雙引號(hào)當(dāng)轉(zhuǎn)換成字符串形式,將自動(dòng)加上反斜線(xiàn),詳細(xì)請(qǐng)祥看本文
1. 如果JSON對(duì)象中有屬性是包含雙引號(hào)的,比如
{
"description": "25""
}
如果轉(zhuǎn)換成字符串形式,將自動(dòng)加上反斜線(xiàn),變?yōu)?25\"", 然后傳遞給REST API,保存到MongoDB中。
此時(shí)如果使用MongoDB的shell顯示該數(shù)據(jù),為"25\"", 正確。
2. 但是如果用C++ driver讀取這個(gè)值是,則得到"25"", 因此如果將它直接返回到瀏覽器端,用jQuery.parseJSON()來(lái)解析就會(huì)報(bào)錯(cuò)。
C++段序列化成字符串的時(shí)候需要判斷一下,將"替換成\".
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對(duì)"25\""調(diào)用jQuery.parseJSON()之后,反斜線(xiàn)已經(jīng)消失,又變?yōu)?25"". 如果再次對(duì)該屬性值調(diào)用jQuery.pareseJSON則又會(huì)出錯(cuò)。
JavaScript必須寫(xiě)代碼防止錯(cuò)誤:
removeDoubleQuotes: function(str) {
return str.replace("\"", "\\\"");
},
這就是雙引號(hào)在JSON中的輪回。夠麻煩吧,要小心點(diǎn)。
復(fù)制代碼 代碼如下:
{
"description": "25""
}
如果轉(zhuǎn)換成字符串形式,將自動(dòng)加上反斜線(xiàn),變?yōu)?25\"", 然后傳遞給REST API,保存到MongoDB中。
此時(shí)如果使用MongoDB的shell顯示該數(shù)據(jù),為"25\"", 正確。
2. 但是如果用C++ driver讀取這個(gè)值是,則得到"25"", 因此如果將它直接返回到瀏覽器端,用jQuery.parseJSON()來(lái)解析就會(huì)報(bào)錯(cuò)。
C++段序列化成字符串的時(shí)候需要判斷一下,將"替換成\".
復(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對(duì)"25\""調(diào)用jQuery.parseJSON()之后,反斜線(xiàn)已經(jīng)消失,又變?yōu)?25"". 如果再次對(duì)該屬性值調(diào)用jQuery.pareseJSON則又會(huì)出錯(cuò)。
JavaScript必須寫(xiě)代碼防止錯(cuò)誤:
復(fù)制代碼 代碼如下:
removeDoubleQuotes: function(str) {
return str.replace("\"", "\\\"");
},
這就是雙引號(hào)在JSON中的輪回。夠麻煩吧,要小心點(diǎn)。
您可能感興趣的文章:
- js使用eval解析json實(shí)例與注意事項(xiàng)分享
- java對(duì)象序列化與反序列化的默認(rèn)格式和json格式使用示例
- jquery序列化form表單使用ajax提交后處理返回的json數(shù)據(jù)
- 教你如何使用PHP輸出中文JSON字符串
- JSON.parse()和JSON.stringify()使用介紹
- 直接在JS里創(chuàng)建JSON數(shù)據(jù)然后遍歷使用
- PHP中使用json數(shù)據(jù)格式定義字面量對(duì)象的方法
- 使用JSON.parse將json字符串轉(zhuǎn)換成json對(duì)象的時(shí)候會(huì)出錯(cuò)
- Android中生成、使用Json數(shù)據(jù)實(shí)例
- PHP使用json_encode函數(shù)時(shí)不轉(zhuǎn)義中文的解決方法
- ASP.NET中MVC使用AJAX調(diào)用JsonResult方法并返回自定義錯(cuò)誤信息
- 在JavaScript中使用JSON數(shù)據(jù)
相關(guān)文章
javascript動(dòng)畫(huà)之磁性吸附效果篇
在實(shí)際應(yīng)用中,常常需要為拖拽的元素限定范圍。而通過(guò)限定范圍,再增加一些輔助的措施,就可以實(shí)現(xiàn)磁性吸附的效果。本文將詳細(xì)介紹javascript的磁性吸附,有需要的朋友可以參考借鑒。2016-12-12前端開(kāi)發(fā)必須知道的JS之閉包及應(yīng)用
本文講的是函數(shù)閉包,不涉及對(duì)象閉包(如用with實(shí)現(xiàn))。如果你覺(jué)得我說(shuō)的有偏差,歡迎拍磚,歡迎指教。2010-07-07Bootstrap入門(mén)教程一Hello Bootstrap初識(shí)
Bootstrap,來(lái)自 Twitter,是目前很受歡迎的前端框架。Bootstrap是基于 HTML5、CSS3和Javascriopt開(kāi)發(fā)的。這篇文章主要介紹了基于Bootstrap3實(shí)現(xiàn)漂亮簡(jiǎn)潔的CSS3價(jià)格表(精美代碼版),需要的朋友可以參考下2017-03-03JavaScript中變量提升和函數(shù)提升實(shí)例詳解
這篇文章主要給大家介紹了關(guān)于JavaScript中變量提升和函數(shù)提升的相關(guān)資料,以及JS變量提升和函數(shù)提升的順序,文中給出了詳細(xì)的介紹,需要的朋友可以參考下2021-07-07js實(shí)現(xiàn)連個(gè)數(shù)字相加而不是拼接的方法
這篇文章主要介紹了js如何實(shí)現(xiàn)連個(gè)數(shù)字相加而不是拼接,需要的朋友可以參考下2014-02-02javascript 常用驗(yàn)證函數(shù)總結(jié)
隨著做項(xiàng)目數(shù)量的越來(lái)越越多,其中用到j(luò)s的地方很多相同,這里自己整理了一些常用表單驗(yàn)證的js方法,雖然和其他js驗(yàn)證框架有一定的差距,但是畢竟是自己總結(jié)的一些東西,在此與紀(jì)錄分享一下。2016-06-06kindeditor修復(fù)會(huì)替換script內(nèi)容的問(wèn)題
這里給大家分享的是個(gè)人修改的kindeditor的代碼,主要是修復(fù)了一些BUG,添加了些常用功能,推薦給大家,有需要的小伙伴可以參考下。2015-04-04解決webpack多頁(yè)面內(nèi)存溢出的方法示例
這篇文章主要介紹了解決webpack多頁(yè)面內(nèi)存溢出的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10