Wie erstelle ich eine JSON-Zeichenfolge in JavaScript?

Lesezeit: 4 Minuten

Benutzer-Avatar
indianwebteufel

window.onload = function(){
    var obj = '{
            "name" : "Raj",
            "age"  : 32,
            "married" : false
            }';

    var val = eval('(' + obj + ')');
    alert( "name : " + val.name + "\n" +
           "age  : " + val.age  + "\n" +
           "married : " + val.married );

}

In einem Code wie diesem versuche ich, eine JSON-Zeichenfolge zu erstellen, nur um herumzuspielen. Es ist ein Fehler, aber wenn ich den ganzen Namen, Alter, verheiratet in eine einzige Zeile (Zeile 2) schreibe, tut es das nicht. Was ist das Problem?

  • Siehe diese Antworten stackoverflow.com/questions/3904269/…

    – powtac

    22. Januar 2012 um 19:00 Uhr

So mache ich es:

   var obj = new Object();
   obj.name = "Raj";
   obj.age  = 32;
   obj.married = false;
   var jsonString= JSON.stringify(obj);

Ich denke, auf diese Weise kann die Wahrscheinlichkeit von Fehlern verringert werden.

  • Wie würde der Code aussehen, wenn Sie dem Baum Tiefe verleihen möchten? Wie für Name möchte ich name.firstname und name.lastname geben. Müsste ich name als var definieren?

    – Emir

    21. Oktober 2020 um 7:25 Uhr

Benutzer-Avatar
bardiir

Haftungsausschluss: Dies ist keine Antwort auf die beste Methode zum Erstellen von JSON in JavaScript selbst. Diese Antwort befasst sich hauptsächlich mit der Frage “Was ist das Problem?” oder WARUM der obige Code nicht funktioniert – was ein falscher String-Verkettungsversuch in JavaScript ist und nicht angeht, warum String-Verkettung eine sehr schlechte Möglichkeit ist, überhaupt einen JSON-String zu erstellen.

Hier finden Sie die beste Methode zum Erstellen von JSON: https://stackoverflow.com/a/13488998/1127761

Lesen Sie diese Antwort, um zu verstehen, warum das obige Codebeispiel nicht funktioniert.

Javascript verarbeitet keine Strings über mehrere Zeilen.

Sie müssen diese verketten:

var obj = '{'
       +'"name" : "Raj",'
       +'"age"  : 32,'
       +'"married" : false'
       +'}';

Sie können in ES6 und höher auch Vorlagenliterale verwenden: (Siehe hier für die Dokumentation)

var obj = `{
           "name" : "Raj",
           "age" : 32,
           "married" : false,
           }`;

  • Oder setzen Sie ein \ am Ende jeder Zeile im Literal.

    – Phrogz

    22. Januar 2012 um 19:05 Uhr


  • Für mehrzeilige Zeichenfolgen können Sie anstelle von einfachen oder doppelten Anführungszeichen ` (Backtick-Zeichen links neben der Taste #1) verwenden. Diese werden als „Vorlagenliterale“ bezeichnet.

    – Blau

    16. August 2016 um 15:08 Uhr

  • Auf jeden Fall: Geben Sie sich nicht mit dieser Antwort zufrieden und schauen Sie auf die anderen.

    – AsTeR

    26. August 2016 um 14:04 Uhr

  • Vorlagenliterale sind ECMA Script 2015 Standard. Diese Frage und Antwort stammt bereits aus dem Jahr 2012. Aber ich werde es bearbeiten 🙂

    – bardiir

    19. Januar 2017 um 13:50 Uhr

  • Wirklich? Die String-Verkettung von Grund auf ist der beste Weg, um JSON zu erstellen? Ich denke, die andere Antwort sollte die akzeptierte Antwort sein.

    – rory.ap

    10. Januar 2019 um 20:12 Uhr

Die Funktion JSON.stringify verwandelt Ihr JSON-Objekt in einen String:

var jsonAsString = JSON.stringify(obj);

Falls der Browser es nicht implementiert (IE6/IE7), verwenden Sie die JSON2.js Skript. Es ist sicher, da es die native Implementierung verwendet, falls vorhanden.

Das kann ziemlich einfach und simpel sein

var obj = new Object();
obj.name = "Raj";
obj.age = 32;
obj.married = false;

//convert object to json string
var string = JSON.stringify(obj);

//convert string to Json Object
console.log(JSON.parse(string)); // this is your requirement.

Verwenden JSON.stringify:

> JSON.stringify({ asd: 'bla' });
'{"asd":"bla"}'

  • Siehe auch json2.js wenn Sie ältere Browser unterstützen müssen.

    – Douglas

    22. Januar 2012 um 19:05 Uhr

  • Ja, hier ist ein Link zu seiner GitHub-Projektliste: github.com/douglascrockford

    – Douglas

    22. Januar 2012 um 19:43 Uhr

  • @nepsdotin Douglas bei SO ist nicht Douglas Crockford, “to seine GitHub”

    – Tim Wolla

    22. Januar 2012 um 19:57 Uhr

  • Aah, das verpasst, nein, Ich bin nicht Crockford!

    – Douglas

    1. Februar 2012 um 10:02 Uhr

Benutzer-Avatar
SULFIKAR AN

Ich denke dieser Weg hilft dir…

var name=[];
var age=[];
name.push('sulfikar');
age.push('24');
var ent={};
for(var i=0;i<name.length;i++)
{
ent.name=name[i];
ent.age=age[i];
}
JSON.Stringify(ent);

  • Siehe auch json2.js wenn Sie ältere Browser unterstützen müssen.

    – Douglas

    22. Januar 2012 um 19:05 Uhr

  • Ja, hier ist ein Link zu seiner GitHub-Projektliste: github.com/douglascrockford

    – Douglas

    22. Januar 2012 um 19:43 Uhr

  • @nepsdotin Douglas bei SO ist nicht Douglas Crockford, “to seine GitHub”

    – Tim Wolla

    22. Januar 2012 um 19:57 Uhr

  • Aah, das verpasst, nein, Ich bin nicht Crockford!

    – Douglas

    1. Februar 2012 um 10:02 Uhr

Benutzer-Avatar
Markus B

json-Strings dürfen keine Zeilenumbrüche enthalten. Sie müssten alles zu einer Zeile machen: {"key":"val","key2":"val2",etc....}.

Generieren Sie JSON-Strings jedoch nicht selbst. Es gibt viele Bibliotheken, die das für Sie erledigen, von denen die größte ist Abfrage.

  • JSON kann Zeilenumbrüche haben, die JavaScript-String-Literal-Syntax jedoch nicht.

    Benutzer1106925

    22. Januar 2012 um 19:03 Uhr

  • Intern innerhalb einer Zeichenfolge, ja, aber nicht zwischen Schlüssel/Wert-Paaren.

    – Markus B

    22. Januar 2012 um 19:07 Uhr

  • Ich denke, Sie verwechseln die JavaScript-String-Literal-Syntax, die kein Zeilenumbruchzeichen ohne Escapezeichen enthalten kann, und JSON-Markup. JSON-Markup kann mit Sicherheit Zeilenumbrüche enthalten.

    Benutzer1106925

    22. Januar 2012 um 19:11 Uhr


  • …fügen Sie den Code in Ihrer Frage ein jsonlint.com (ohne etc. natürlich). Nachdem Sie auf Validieren geklickt haben, sehen Sie, dass es tatsächlich so ist Einsätze Zeilenumbrüche, wenn es hübsch gedruckt wird.

    Benutzer1106925

    22. Januar 2012 um 19:14 Uhr

1227230cookie-checkWie erstelle ich eine JSON-Zeichenfolge in JavaScript?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy