在使用JavaScriptSerializer.Serialize 方法轉(zhuǎn)json對(duì)象時(shí),遇到一個(gè)問(wèn)題,后臺(tái)方法生成的json字符串中有沒(méi)有轉(zhuǎn)義的特殊字符代碼;
而這些特殊的代碼在使用javascript的轉(zhuǎn)json對(duì)象方法時(shí)報(bào)錯(cuò),為了講這個(gè)轉(zhuǎn)義的東西轉(zhuǎn)義過(guò)來(lái),折騰了半天。著實(shí)對(duì)javascript無(wú)語(yǔ);
后臺(tái)代轉(zhuǎn)的對(duì)象是
Dictionary<string,string> DepartmentsExistTaskCounts
前臺(tái)頁(yè)面使用的MVC里的razor 寫法,直接使用后臺(tái)方法把數(shù)據(jù)轉(zhuǎn)成JSON存在腳本變量里;
var jsonstr = "@(JSONHelper.ObjectToJSON(DepartmentsExistTaskCounts))";
實(shí)際轉(zhuǎn)了之后,轉(zhuǎn)義的特殊字符已編碼形式出現(xiàn)了;
var jsonstr = "{"1":"0","2":"0","3":"0"}";
于是想替換掉這個(gè)",使用replace
方法,結(jié)果坑爹以為replace會(huì)替換掉全部,一直找原因,最后一調(diào)試才發(fā)現(xiàn)這JavaScript的replace方法默認(rèn)只替換第一個(gè)!
真的是醉了。于是重新給String方法加上replaceAll
方法。才弄好;
只想對(duì)javascpript說(shuō)句,坑死個(gè)人。
前端部分截取腳本 :
<script type="text/javascript"> //擴(kuò)展javascript 的replace方法 String.prototype.replaceAll = function(s1,s2){ return this.replace(new RegExp(s1,"gm"),s2); } var counts = parseInt("@(DepartmentCounts)"); var gDepartmentsAddCount = {}; var jsonstr = "@(JSONHelper.ObjectToJSON(DepartmentsExistTaskCounts))"; jsonstr = jsonstr.replaceAll(""","'"); gDepartmentsAddCount = ToJson( jsonstr ); //JSon轉(zhuǎn)換 function ToJson(json) { try { return eval(json); } catch (e) { try { return eval('(' + json + ')'); } catch (e) { //alert(json); } } } </script>
總結(jié)
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com