程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Json數據中的特殊字符處理,json數據特殊字符

Json數據中的特殊字符處理,json數據特殊字符

編輯:C#入門知識

Json數據中的特殊字符處理,json數據特殊字符


今天在項目中遇到一個問題,頁面上的數據突然顯示不出來了,查驗後得知是Json數據出現了問題。使用JSON從後台向前台傳輸數據的時候,當數據本身含有一些特殊字符,會導致JSON數據的解析出錯。如果內容中本身就包含了 "\"" 雙引號、"\r\n" 回車換行這時候,數據的解析就會出現問題。

\r,\n,\r\n的區別

\n是換行,英文是New line,表示使光標到行首
\r是回車,英文是Carriage return,表示使光標下移一格

\r\n表示回車換行

 

"\r\n"與"</br>"的區別 

\r\n是輸出的HTML代碼換行(查看html代碼時,代碼換行了)
<br />輸出給浏覽器換行(看網頁效果時,文字換行了)

 

用戶在Textarea輸入內容時,有時候會輸入雙引號,回車或者換行符,保存時,這些特殊符號也也文本內容一起保存到數據庫裡去了,當獲取這些數據時,Json的解析就會出錯

下面是有問題數據:

{
"employees": [
{ "firstName":"Bill" , "lastName":"Gates”" },
{ "firstName":"George
回車了" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName":"Carter" }
]
}

  

不改動數據數據,怎樣才能把數據傳到頁面上去呢。思路是後端把 \r\n(回車)轉成<br/>再,前端再把<br/>轉回 \r\n

C# 代碼:

1 public static string EncodeTextareaChar(string str)
2         {
3             if (str == null) return null;
4             return str.Replace("\"", "\\\"").Replace("\r\n", "<br/>").Replace("\n", "<br/>").Replace("\r", "<br/>");
5         }

 

Javascript代碼

1 function encodeTextarea(str) {
2         str = str.replace(/&lt;/g, "<").replace(/&gt;/g,">");
3         var str = str.replace(/<br\/>/g, "\r\n");
4         return str;
5     }

 

兩種語言都有 replace() 方法,他們也略微有些區別,

Javascript的 replace 只替換一次,如"abcaebacd"中有兩個c,它只替換第一個,replace("c","s"),結果是"absaebacd"

C#的replace替換全部,replace("c","s"),結果是"absaebasd"

 

注:Javascript 要想實現全部替換,可以 replace(/c/g,"s"), / /之間是要替換的內容,g為全局標志

為什麼要加這一個呢?
str.replace(/&lt;/g, "<").replace(/&gt;/g,">");
因為後端傳過來的    <br/>    變成了 &lt;br/&gt;

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved