Arrays sollten nur Einträge mit numerischen Schlüsseln haben (Arrays sind auch Objekte, aber Sie sollten diese wirklich nicht mischen).
Wenn Sie ein Array in JSON konvertieren, berücksichtigt der Prozess nur numerische Eigenschaften. Andere Eigenschaften werden einfach ignoriert und deshalb erhalten Sie als Ergebnis ein leeres Array. Vielleicht ist dies offensichtlicher, wenn Sie sich length
das Array ansehen :
> AssocArray.length
0
Was oft als "assoziatives Array" bezeichnet wird, ist in JS eigentlich nur ein Objekt:
var AssocArray = {};
AssocArray["a"] = "The letter A"
console.log("a = " + AssocArray["a"]);
JSON.stringify(AssocArray);
Auf Eigenschaften von Objekten kann über die Array- oder Punktnotation zugegriffen werden (wenn der Schlüssel kein reserviertes Schlüsselwort ist). Also AssocArray.a
ist das gleiche wie AssocArray['a']
.
Json.stringify
ignoriert Nicht-Array-Eigenschaften von Arrays.{}
odernew Object()
, NICHT[]
odernew Array()
In JavaScript gibt es keine assoziativen Arrays. Es gibt jedoch Objekte mit benannten Eigenschaften. Initialisieren Sie Ihr "Array" also nicht mit
new Array
, es wird dann zu einem generischen Objekt.quelle
Einverstanden, dass es wahrscheinlich die beste Vorgehensweise ist, Objekte als Objekte und Arrays als Arrays beizubehalten. Wenn Sie jedoch ein Objekt mit benannten Eigenschaften haben, das Sie als Array behandeln, können Sie dies folgendermaßen tun:
let tempArr = []; Object.keys(objectArr).forEach( (element) => { tempArr.push(objectArr[element]); }); let json = JSON.stringify(tempArr);
quelle
Ich schrieb einen Fix für dieses hier
Sie können diese Funktion verwenden, um
JSON.stringify
die Codierung zu ändern. Veröffentlichen Sie siearrays
einfach am Anfang Ihres Skripts (weitere Informationen finden Sie unter dem obigen Link):// Upgrade for JSON.stringify, updated to allow arrays (function(){ // Convert array to object var convArrToObj = function(array){ var thisEleObj = new Object(); if(typeof array == "object"){ for(var i in array){ var thisEle = convArrToObj(array[i]); thisEleObj[i] = thisEle; } }else { thisEleObj = array; } return thisEleObj; }; var oldJSONStringify = JSON.stringify; JSON.stringify = function(input){ if(oldJSONStringify(input) == '[]') return oldJSONStringify(convArrToObj(input)); else return oldJSONStringify(input); }; })();
quelle
Möglicherweise möchten Sie das Objekt in das Array verschieben
enter code here var AssocArray = new Array(); AssocArray.push( "The letter A"); console.log("a = " + AssocArray[0]); // result: "a = The letter A" console.log( AssocArray[0]); JSON.stringify(AssocArray);
quelle