javascript json字符串到j(luò)son對(duì)象轉(zhuǎn)義問(wèn)題
在使用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 寫(xiě)法,直接使用后臺(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é)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
echarts學(xué)習(xí)筆記之圖表自適應(yīng)問(wèn)題詳解
最近發(fā)現(xiàn)一個(gè)問(wèn)題,echarts圖初始化后不能自適應(yīng)瀏覽器的縮放,所以下面這篇文章就來(lái)給大家介紹了關(guān)于echarts圖表自適應(yīng)問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
詳解如何構(gòu)建Promise隊(duì)列實(shí)現(xiàn)異步函數(shù)順序執(zhí)行
這篇文章主要介紹了詳解如何構(gòu)建Promise隊(duì)列實(shí)現(xiàn)異步函數(shù)順序執(zhí)行,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
javascript實(shí)現(xiàn)的動(dòng)態(tài)添加表單元素input,button等(appendChild)
這篇文章給大家介紹了javascript實(shí)現(xiàn)的動(dòng)態(tài)添加表單元素input,button等(appendChild)的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2007-11-11
form表單中去掉默認(rèn)的enter鍵提交并綁定js方法實(shí)現(xiàn)代碼
form表單中默認(rèn)的enter提交是不是讓你已經(jīng)很耐煩了吧,本文主要講解一下如何去掉默認(rèn)的enter鍵提交同時(shí)綁定js方法,感興趣的朋友可以參考下哈2013-04-04
js調(diào)試系列 控制臺(tái)命令行API使用方法
上次初步介紹了什么是控制臺(tái),以及簡(jiǎn)單的 console.log 輸出信息。最后還有兩個(gè)小問(wèn)題,我們就當(dāng)回顧,來(lái)看下怎么操作吧2014-06-06
npm install jquery報(bào)錯(cuò)問(wèn)題解決
這篇文章主要為大家介紹了npm install jquery報(bào)錯(cuò)問(wèn)題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
跟我學(xué)Nodejs(二)--- Node.js事件模塊
events是node.js 最重要的模塊,events模塊只提供了一個(gè)對(duì)象events.EventEmitter,EventEmitter 的核心是事件發(fā)射與事件監(jiān)聽(tīng)器。2014-05-05
Bootstrap-table自定義可編輯每頁(yè)顯示記錄數(shù)
這篇文章主要介紹了Bootstrap-table自定義可編輯每頁(yè)顯示記錄數(shù)的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09

