Der erste Fall:
var x = { foo: "bar", qux: 123 };
var y = { baz: "123", yeen: { arr: [1,2,3] };
var test = [ x, y ]; // [Object,Object]
Für den zweiten Fall finden Sie MDN in der Dokumentation des Array()
:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
new Array(arrayLength)
Wenn das einzige Argument für die Array übergeben Konstruktor ist eine Ganzzahl zwischen 0 und 2^32 - 1
(inklusive), dies gibt ein neues J zurück avascript Array mit seiner Länge Eigenschaft auf diese Zahl
So Ihres zweiter Fall Code vermutlich:
var test = Array(2);
... dies wertet tatsächlich [undefined,undefined]
), aber .NET (also ASP.NET) hat kein Konzept von "undefined
" (im Vergleich zu null
), so dass dieser Wert nicht zu JSON serialisierbar ist (da JSON keine undefined
Werte zulässt) - dies erklärt, warum es fehlschlägt.
Wenn ein „leeres“ Array-Element in Ihrer Anwendung sinnvoll ist, sollten Sie explizit null
Werte stattdessen verwenden - im Idealfall mit einem Array-wörtlichen wie so:
var ret = [ null, null ];
Oder wenn die Anzahl der Elemente ist unterschiedlich:
var ret = Array(123); // This creates a 123-sized array, where every element is undefined. This cannot be serialized to JSON
ret.fill(null); // This explicitly sets every element to a null value. The array can now be serialized to JSON.
Was versuchen Sie hier zu tun? initialisiere einfach ein Array mit der Länge == 2? – sethro
Offensichtlich enthält das eine zwei Funktionen, während das andere nichts enthält. – Bergi
Bitte zeigen Sie Ihren echten Code und präsentieren Sie Ihr [tatsächliches Problem] (https://meta.stackexchange.com/q/66377). – Bergi