萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> JSON中雙引號的輪回使用過程中一定要小心

JSON中雙引號的輪回使用過程中一定要小心

 如果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中的輪回。夠麻煩吧,要小心點。 
copyright © 萬盛學電腦網 all rights reserved