2016-03-29 14 views
2

Ich weiß, dass json.Stringify() -Funktion ein JSON-Objekt in JSON-Zeichenfolge konvertiert.konvertieren Sie eine Zeichenfolge in JSON-Objekt Javascript

json.stringify({x:9}) 

wird diese Zeichenfolge "{"x" : 9}"

zurückkehren Aber ist es eine Möglichkeit, einen einfachen String in json-Format zu konvertieren? Zum Beispiel möchte ich dieses

var str = '{x: 9}' 
json.stringify(str) //"{"x" : 9}" 
+1

'var str = '{" x ": 9}'; var obj = JSON.parse (str) ' –

Antwort

3

einer mit proper format Schnur besuchen können, können Sie JSON.parse verwenden.

var str = '{"x" : 9}', 
 
    obj = JSON.parse(str); 
 

 
document.write('<pre>' + JSON.stringify(obj, 0, 4) + '</pre>');  

0

Erste Lösung eval Verwendung:

const parseRelaxedJSON = (str) => eval('(_ => (' + str + '))()') 
JSON.stringify(parseRelaxedJSON('{x: 5}')) 

(_ => (' + str + '))() ist eine selbstausführende anonyme Funktion. Es ist notwendig, eval Zeichenketten ähnlich wie {x: 5} auszuwerten. Auf diese Weise eval wird die Expression Funktion (_ => ({x: 5}))() evaluieren, die, wenn Sie nicht vertraut mit ES6 Syntax sind äquivalent zu:

(function() { 
    return {x: 5} 
})() 

Zweite Lösung: einen richtigen ‚entspannt‘ JSON-Parser wie JSON5

JSON.stringify(JSON5.parse('{x: 2}')) 
mit

JSBin

Verwandte Themen