37 Stimmen

Wie kann ich JSON dynamisch in Javascript erstellen?

var myJSON = {  
              "list1" : [ "1", "2" ],
              "list2" : [ "a", "b" ],
              "list3" : [ { "key1" : "value1" }, { "key2" : "value2" } ],
              "not_a_list" : "11"
             };

Wie baue ich diese JSON-Struktur dynamisch in Javascript auf? Google sagt mir, verwenden Sie einige Push-Befehl, aber ich habe nur bestimmte Fälle gefunden. Was schreibe ich also, um Daten in "listX" und "not_a_list" einzugeben. Sowohl das Anhängen als auch das Erstellen einer neuen Liste. Die ganze Prozedur beginnt mit:

var myJSON = {};

82voto

Neall Punkte 24968

Erstens glaube ich, dass du es falsch nennst. "JSON" steht für "JavaScript Object Notation" - es ist nur eine Spezifikation für die Darstellung einiger Daten in einer Zeichenkette, die explizit JavaScript-Objekt- (und Array-, String-, Zahlen- und Boolesche) Literale nachahmt. Sie versuchen, ein JavaScript-Objekt dynamisch aufzubauen - das Wort, das Sie suchen, ist also "Objekt".

Nachdem wir diese Pedanterie aus dem Weg geräumt haben, denke ich, dass Sie fragen, wie man Objekt- und Array-Eigenschaften festlegt.

// make an empty object
var myObject = {};

// set the "list1" property to an array of strings
myObject.list1 = ['1', '2'];

// you can also access properties by string
myObject['list2'] = [];
// accessing arrays is the same, but the keys are numbers
myObject.list2[0] = 'a';
myObject['list2'][1] = 'b';

myObject.list3 = [];
// instead of placing properties at specific indices, you
// can push them on to the end
myObject.list3.push({});
// or unshift them on to the beginning
myObject.list3.unshift({});
myObject.list3[0]['key1'] = 'value1';
myObject.list3[1]['key2'] = 'value2';

myObject.not_a_list = '11';

Dieser Code baut das Objekt auf, das Sie in Ihrer Frage angegeben haben (mit dem Unterschied, dass ich es myObject statt myJSON nenne). Für weitere Informationen über den Zugriff auf Eigenschaften empfehle ich die Mozilla JavaScript-Anleitung und das Buch JavaScript: Die guten Seiten .

15voto

AndreKR Punkte 30092

として myJSON ein Objekt ist, können Sie z. B. einfach seine Eigenschaften festlegen:

myJSON.list1 = ["1","2"];

Wenn Sie den Namen der Eigenschaften nicht kennen, müssen Sie die Syntax für den Array-Zugriff verwenden:

myJSON['list'+listnum] = ["1","2"];

Wenn Sie ein Element zu einer der Eigenschaften hinzufügen möchten, können Sie dies tun;

myJSON.list1.push("3");

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X