简体   繁体   中英

Convert object string to JS object

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM