Hier ist eine Zeichenfolge:

"{aa:function(){},bb:document.body}"

JSON.parse funktioniert hierfür nicht. Wie konvertiere ich es in ein JS-Objekt?

0
Fei Sun 18 Apr. 2018 im 12:00

3 Antworten

Beste Antwort

Sie können eval mit einer vorangestellten Zuweisung verwenden.

Vorsichtsmaßnahme: Warum ist die Verwendung der JavaScript-Bewertungsfunktion eine schlechte Idee?

var string = "{aa:function(){},bb:document.body}",
    object;
    
eval('object = ' + string);

console.log(object);
2
Nina Scholz 18 Apr. 2018 im 09:06

Eine Option in diesem Fall könnte die Verwendung von new Function() sein.

Es ist weniger böse als eval(), und hier ist eine Antwort mit einer Erklärung über ihren Unterschied:

Stapelschnipsel

var string = "{aa:function(){},bb:document.body}",
    object;
    
object = new Function( 'return (' + string + ')' )();

console.log(object);
1
LGSon 18 Apr. 2018 im 09:31

Falls Sie die Zeichenfolge als JSON-Objekt behandeln müssen:

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();
0
Felipe Plazas 18 Apr. 2018 im 09:22