将包含数组的Javascript对象序列化为json?

将包含数组的Javascript对象序列化为json?,javascript,arrays,json,associative,stringify,Javascript,Arrays,Json,Associative,Stringify,我有一个javascript对象,它包含几个包含关联数组的对象。我一直在尝试使用json2.js库的stringify函数,但输出不包含包含的对象成员中的数组。 在我的代码中,我是这样开始的 obj = {"arr1" : [], "arr2" : [], "arr3" : []}; 然后,我向它添加了填充每个包含数组的循环 obj[arr*].push[arritem*]; obj[arr*][arritem*] = something; 我输入的arr*和arritem*只是为了表示我为

我有一个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]}'
有没有更好的图书馆,或者在大步前进之前我必须做些什么

obj.toSource()
这将把数组转换为源字符串

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}

能否提供更精确的输入/输出示例?您的脚本中肯定有不一致之处。@gman060692:Javascript没有关联数组。它有对象;对象的子集是[数字索引]数组。如果您试图将非数字键推入数组,那么这就是您的问题。在我的javascript代码中引用数组项时,非数字键可以正常工作,也许firefox可以在javascript中处理关联数组,但stringify函数不能。或者只是创建分层对象而不是数组。@gman060692:不,数组没有非数字键。您可以检索在数组的基础对象上设置的属性值,因为这是数组的实现方式和Javascript的工作方式,但这些非数字键控项不是实际数组数据的一部分。这样使用数组是无效的。希望我更新的答案能为您澄清一切。@gman060692:一个基本对象,如最后一个示例中所示。这就是所谓的“关联数组”,尽管这个术语不能严格地导入到Javascript环境中!完整对象的封闭符号是
{
}
这一点都不愚蠢。@gman060692:没问题。欢迎来到堆栈溢出。祝您的访问长久繁荣。我在Chrome中似乎没有这个功能?