Here is a string:
"{aa:function(){},bb:document.body}"
JSON.parse doesn't work for this,how to convert it to JS object?
You could use eval
with a prepended assingment.
Caveat: Why is using the JavaScript eval function a bad idea?
var string = "{aa:function(){},bb:document.body}", object; eval('object = ' + string); console.log(object);
An option in this case could be to use new Function()
.
It is less evil than eval()
, and here is an answer with an explanation about their difference:
Stack snippet
var string = "{aa:function(){},bb:document.body}", object; object = new Function( 'return (' + string + ')' )(); console.log(object);
In case you need to treat the string as a json object:
let str = "{\\"aa\\":\\"function() { console.log('Look mama no hands'); }\\",\\"bb\\":\\"document.body\\"}"; let obj = JSON.parse(str); let func = null; eval("func = "+obj.aa); func();
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.