我有一个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]}'
是否有一个更好的图书馆或者在进行strinfying之前我还需要做些什么?
答案 0 :(得分:4)
var obj = {"arr1" : [], "arr2" : [], "arr3" : []};
console.log(JSON.stringify(obj));
填充数组works too。
<强>更新强>
您暗示您正在尝试将具有非数字键的元素添加到数组中。
这是无效的。特别是,您所需的输出是不有效的JSON。数组只有 数字键,它们不包含在JSON本身中,因为它们是隐式的,顺序定义的。
Arrays是一种特殊类型的Object,它为您处理 numeric 索引。
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}
答案 1 :(得分:0)
obj.toSource()
这会将您的数组转换为源字符串。