Hallo Knotenknut,
wenn Du die JSON-Repräsentation eines Objekts erzeugen willst, hilft Dir ein Array nicht. Daraus entsteht die JSON-Repräsentation eines Arrays.
Wenn Du eine geordnete Liste von Key-Value Paaren in JSON-Objektnotation haben willst, hilft Dir aber auch eine Map nichts. Zumindest nicht out-of-the-box in Chrome, der serialisiert keine Maps zu JSON.
let a = new Map();
a.set("foo", 1);
a.set("bar", 2);
console.log(JSON.stringify(a));
// -> {}
Meine persönliche Befürchtung wäre: um eine JSON-Darstellung eines Objekts mit einer definierten Reihenfolge der Properties zu erhalten, musst Du selbst Hand anlegen.
Die Frage, die sich dann stellt, ist natürlich diese: Wozu brauchst Du beim Empfänger diese definierte Reihenfolge? Wenn der Empfänger den JSON-String deserialisiert, bekommt er wieder ein Objekt. Die verwendete Serversprache muss dann auch erstmal eine Reihenfolge der Properties garantieren.
Deswegen: um eine definierte Reihenfolge von Key-Value Paaren zu erhalten - ja, da ist wohl ein Array von Objekten die sachlich richtige Lösung (oder ein Array von Key+Value Arrays).
So - klare Key-Value Objekte, aber längliche Serialisierung:
let a = [ { key: "foo&bar", value: 1 }, { key: "hui", value: 2 } ];
// JSON.stringify(a) -> "[{"key":"foo&bar","value":1},{"key":"hui","value":2}]"
oder so - das funktioniert immer:
let a = [ [ "foo&bar", 1 ], [ "hui", 2 ] ];
// JSON.stringify(a) -> "[["foo&bar",1],["hui",2]]"
oder so - Key-Value Paare als Objekte mit genau einer Eigenschaft:
let b = [ { "foo&bar": 1 }, { "hui": 2 } ];
// JSON.stringify(b) -> "[{"foo&bar":1},{"hui":2}]"
Ob letzteres mit deiner serverseitigen Sprache funktioniert, musst Du schauen. Nicht jede Sprache lässt beliebige Zeichen in Namen für Properties zu.
Rolf
sumpsi - posui - clusi