2

連想配列を含むいくつかのオブジェクトを含むjavascriptオブジェクトがあります。json2.jsライブラリのstringify関数を使用しようとしましたが、出力に、含まれているオブジェクトメンバーに保持されている配列が含まれていません。私のコードでは、次のようなものから始めます

obj = {"arr1" : [], "arr2" : [], "arr3" : []};

次に、含まれている各配列を埋めるループを追加します

obj[arr*].push[arritem*];
obj[arr*][arritem*] = something;

ループに入力する変数を表すためだけに入力したarr*とarritem*。Json.stringify(obj)を試しましたが、返される文字列は

'{"arr1" : [0], "arr2" : [0], "arr3" : [0]}'

出力を次のように表示したい

'{"arr1" : [ "arritem1" : something, "arritem2" : something2], "arr2" : [ "arritem1" : something, "arritem2" : something2], "arr3" : [ "arritem1" : something, "arritem2" : something2]}'

このためのより良いライブラリがありますか、それとも私が苦しむ前にやらなければならないことがありますか?

4

2 に答える 2

4
var obj = {"arr1" : [], "arr2" : [], "arr3" : []};
console.log(JSON.stringify(obj));

私のために働きます。

配列の塗りつぶしも機能します


アップデート

数値以外のキーを持つ要素を配列に追加しようとしていることを意味します。

これは無効です。特に、目的の出力は有効なJSONではありません。配列には数値キーのみがあり、暗黙的に順次定義されるため、JSON自体には含まれません。

配列は特殊なタイプのオブジェクトであり、数値インデックスを処理します。

var arr = [];   // Create array.
arr.push(1);    // There is now one element, with index 0 and value 1.
arr["txt"] = 2; // You tried to create a new element,
                // but didn't use .push and gave a non-numeric key.
                // This broke your array.

console.log(JSON.stringify(arr));
// Output: [1]

ライブデモ。

簡単に言えば...これをしないでください。「連想配列」が必要な場合は、基本的なオブジェクトに固執します。

var obj    = {}; // Create object.
obj[0]     = 1;  // There is now one element, with key "0" and value 1.
obj["txt"] = 2;  // There is now a second element, with key "txt" and value 2.

console.log(JSON.stringify(arr));
// Output: {"0":1,"txt":2}

ライブデモ。

于 2011-08-04T15:12:40.800 に答える
0
obj.toSource()

これにより、配列がソース文字列に変換されます。

于 2011-08-04T15:05:58.537 に答える