json格式的字符串轉為json對象遇到特殊字符問題解決


中午做后台發過來的json的時候轉為對象,可是有幾條數據一直出不來,檢查發現json里包含了換行符,造成這種情況的原因可能是編輯部門在編輯的時候打的回車造成的

假設有這樣一段json格式的字符串

 1 var json={
 2   "school": [
 3     {
 4       "school_id": "007",
 5       "name": "大西安帝國皇家財經學院",
 6       "position": "西安",
 7       "student_num": 40000,
 8       "desc": "西財人傑地靈,\n美女如雲" //中間出現換行符\n
 9     },
10     {
11       "school_id": "009",
12       "name": "湘潭大學",
13       "position": "湖南",
14       "student_num": 60000,
15       "desc": "湘大好,\n好的很"
16     }
17   ]
18 }

 

假如上面這段json是string類型 現在需要轉成object類型調用里面的值

一般情況下用JSON.parse(json);來將字符串轉換為對象的json;

var data=JSON.parse(json);

但是由於出現了特殊字符\n 並沒有轉換成功

alert(typeof data);

並沒有返回object

 

接下來我們需要編寫一個函數將json字符串里的特殊字符去掉然后再將去掉后的json字符串轉為對象類型

 

function json_obj(str){
  var pattern= new RegExp("[\n]") ; //創建一個包含\n的正則對象
  var result="";  //定義一個空字符
  for(var i=0;i<str.length;i++){
    result=result+str.substr(i,1).replace(pattern,'');//逐字檢索 發現\n就換為空;
  } 
  return result; //返回轉換完成的新json字符串
}

將轉換后的json字符串轉換為對象類型

var data=json_obj(json);
alert(typeof data); //object

當然可能不止遇到\n這一種情況,檢查json看是哪種特殊字符導致的錯誤  然后正則表達式設置哪種字符;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM