2011-08-04 12 views
2

私は結合配列を含むいくつかのオブジェクトを含むjavascriptオブジェクトを持っています。私はjson2.jsライブラリのstringify関数を使用しようとしていますが、出力には含まれているオブジェクトメンバーに保持されている配列が含まれていません。私は表現するためにちょうど入れ*私のコードで は私が含まれている配列含まれている配列を持つJavascriptオブジェクトをjsonにシリアル化しますか?

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

編曲:*とのそれぞれを埋めるループでそれに追加し、この

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

のようなものarritemで始まります私はループのために入れている変数です。 私は

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

として出力に含まを確認したいと思い、私はJson.stringify(OBJ)を試みるが、私は戻って取得文字列は

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

であることは、このためのより良いライブラリがあるか何か私はそこにありますストリンギングする前にやらなければならない?

+0

は、あなたがより正確な入力/出力の例を提供することはできますか?あなたには確かに矛盾があります。 –

答えて

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

Works for me.


更新

あなたはアレイに数字以外のキーを持つ要素を追加しようとしていることを示唆しています。

これは無効です。特に、希望の出力はで、有効な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] 

Live demo.

かいつまんで...これをしません。あなたは「連想配列」をしたい場合は、基本的なオブジェクトに固執:

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} 

Live demo.

+0

配列が関連付けられている場合、それは働きます – gman060692

+0

@ gman060692:Javascriptには連想配列がありません。それはオブジェクトを持っています。オブジェクトのサブセットは[数値索引]配列です。非数値キーを配列にプッシュしようとすると、それが問題になります。 –

+0

javascriptコードで配列項目を参照するときに非数値キーが正常に機能します。おそらくFirefoxはJavaScriptの連想配列を処理できますが、stringify関数は対応できません。または、配列の代わりにレイヤーオブジェクトを作成するだけです。 – gman060692

0
obj.toSource() 

これは、配列をソース文字列に変換します。アレイworks too充填

+0

Chromeでこの機能を使用していないようですか? – Kos

関連する問題