1.eval方式解析
function strToJson(str){var json = eval("(" + str + ")");return json;}console.log(strToJson("{'int':1, 'string':'demo'}"));
運行截圖:
注: 記得別忘了str兩旁的小括號。
永遠不要使用 eval !!!
eval() 是一個危險的函數, 它使用與調用者相同的權限執行代碼。如果你用 eval() 運行的字符串代碼被惡意方(不懷好意的人)修改,您最終可能會在您的網頁/擴展程序的權限下,在用戶計算機上運行惡意代碼。更重要的是,第三方代碼可以看到某一個 eval() 被調用時的作用域,這也有可能導致一些不同方式的攻擊。相似的 Function 就不容易被攻擊
2.new Function形式
function strToJson(str){var json = (new Function("return " + str))();return json;}console.log(strToJson("{'int':1, 'string':'demo'}"));
運行截圖:
3.使用全局的JSON對象
function strToJson(str){return JSON.parse(str);}console.log(strToJson('{"int":1, "string":"demo"}'));
運行截圖:
注: 單引號,雙引號的位置。 使用JSON.parse需嚴格遵守JSON規范,如屬性都需用引號引起來。