中午做后台發過來的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看是哪種特殊字符導致的錯誤 然后正則表達式設置哪種字符;