2016-06-13 9 views

Antwort

1

Verwenden Sie JSON.parse(). Es nimmt eine JSON-Zeichenfolge als Parameter und gibt die von ihm dargestellte Struktur zurück.

Alternativ können Sie verwenden eval() (aber ich weiß nicht empfehlen diese)

var json = '["apple", true, 42]'; 
 

 
console.log(json); 
 
console.log(JSON.parse(json)); 
 
console.log(eval(json));

+0

Natürlich. Ich suchte nach einer anderen Methode. Ich werde die ursprüngliche Frage ändern. – gator

+1

@campallison Können Sie erklären warum? Das ist eine ungewöhnliche Anforderung. – 4castle

+0

Während ich JS lernte, habe ich einige der eingebauten Methoden neu erstellt. In diesem speziellen Fall versuche ich zu sehen, ob ich einen JSON-Parser mit anständiger Geschwindigkeit erstellen kann (kann große Datensätze verarbeiten). Ich glaube, Sie haben Recht, dass die Verwendung von JSON.parse in jeder realen Anwendung nicht ratsam ist. – gator

0

Sie so etwas wie dies versuchen könnte:

var ar = '["bonjour", true, 42]'; 
function reduce(element, index, array){ 
    if (index === 0) return element.slice(2, -1); 
    if (index === array.length - 1) return element.slice(1, -1); 
    return element; 
} 
var map = ar.split(",").map(reduce) 
console.log(map); // [ 'bonjour', ' true', '42' ] 
0

Hier eine funktionierende Lösung mit eval(), wie von @ 4castle vorgeschlagen.

function parser(str) { 
    return eval('(' + str + ')'); 
} 
+0

Das wird funktionieren! Das Hinzufügen von Klammern zur Zeichenfolge ist wahrscheinlich nicht erforderlich. – 4castle

+0

eval (str) hat an allem gearbeitet, außer an geschweiften Klammern. Aber ja, eval (str) arbeitet an einem Array und benötigt keine Klammern. – gator