js字符串轉(zhuǎn)json的三種簡單方法舉例
1.eval方式解析
function strToJson(str){
var json = eval("(" + str + ")");
return json;
}
console.log(strToJson("{'int':1, 'string':'demo'}"));運(yùn)行截圖:

注: 記得別忘了str兩旁的小括號(hào)。
永遠(yuǎn)不要使用 eval !!!
eval() 是一個(gè)危險(xiǎn)的函數(shù), 它使用與調(diào)用者相同的權(quán)限執(zhí)行代碼。如果你用 eval() 運(yùn)行的字符串代碼被惡意方(不懷好意的人)修改,您最終可能會(huì)在您的網(wǎng)頁/擴(kuò)展程序的權(quán)限下,在用戶計(jì)算機(jī)上運(yùn)行惡意代碼。更重要的是,第三方代碼可以看到某一個(gè) eval() 被調(diào)用時(shí)的作用域,這也有可能導(dǎo)致一些不同方式的攻擊。相似的 Function 就不容易被攻擊
2.new Function形式
function strToJson(str){
var json = (new Function("return " + str))();
return json;
}
console.log(strToJson("{'int':1, 'string':'demo'}"));運(yùn)行截圖:

3.使用全局的JSON對(duì)象
function strToJson(str){
return JSON.parse(str);
}
console.log(strToJson('{"int":1, "string":"demo"}'));
運(yùn)行截圖:

注: 單引號(hào),雙引號(hào)的位置。 使用JSON.parse需嚴(yán)格遵守JSON規(guī)范,如屬性都需用引號(hào)引起來。
總結(jié)
到此這篇關(guān)于js字符串轉(zhuǎn)json的三種簡單方法的文章就介紹到這了,更多相關(guān)js字符串轉(zhuǎn)json內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS 實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能
驗(yàn)證碼驗(yàn)證是網(wǎng)頁常出現(xiàn)的一個(gè)驗(yàn)證點(diǎn),所謂驗(yàn)證碼類型有很多,下面代碼只是實(shí)現(xiàn)一個(gè)簡單的驗(yàn)證功能,需要的朋友參考下2017-02-02
JS中g(shù)etElementsByClassName與classList兼容性問題解決方案分析
這篇文章主要介紹了JS中g(shù)etElementsByClassName與classList兼容性問題解決方案,結(jié)合實(shí)例形式分析了getElementsByClassName與classList的使用方法、原理及兼容性問題的處理技巧,需要的朋友可以參考下2019-08-08
firefox下input type="file"的size是多大
firefox對(duì)type="file" 的input的width定義目前是不支持的,但是FF支持size屬性,可以給size設(shè)置一個(gè)值,來控制上傳框的大小2011-10-10
前端包管理器深度對(duì)比(npm?、pnpm和Yarn)
在JavaScript的世界中,包管理器是一個(gè)重要的工具,它幫助我們管理、安裝和升級(jí)項(xiàng)目的依賴,這篇文章主要介紹了前端包管理器對(duì)比(npm?、pnpm和Yarn)的相關(guān)資料,需要的朋友可以參考下2025-09-09
原生javascript實(shí)現(xiàn)拖動(dòng)元素示例代碼
首先改變被拖動(dòng)元素的布局屬性,接著捕捉鼠標(biāo)事件,當(dāng)觸發(fā)mousedown時(shí),記錄下當(dāng)前鼠標(biāo)在元素中的相對(duì)位置,接著處理mousemove事件2014-09-09
Javascript的常規(guī)數(shù)組和關(guān)聯(lián)數(shù)組對(duì)比小結(jié)
關(guān)聯(lián)數(shù)組雖然可以用字符串作下標(biāo),但是這個(gè)下標(biāo)是不支持參數(shù)傳值的,換言之,你需要什么就取什么,聽起來很智能,實(shí)際上你取值仍然需要你手動(dòng)去寫下標(biāo)的2012-05-05

