我需要知道是否有任何JSON实现可以处理稀疏数组,以使我满意。我看过这个问题:How to represent a sparse array in JSON?但是使用一个对象而不是一个数组不是我的选择;我需要一个数组。处理稀疏数组的JSON实现
我的最低要求是实施填写任何与“未定义”的差距。否则,我正在编写防御性代码,在JSON编码之前自己填补空白。
我需要知道是否有任何JSON实现可以处理稀疏数组,以使我满意。我看过这个问题:How to represent a sparse array in JSON?但是使用一个对象而不是一个数组不是我的选择;我需要一个数组。处理稀疏数组的JSON实现
我的最低要求是实施填写任何与“未定义”的差距。否则,我正在编写防御性代码,在JSON编码之前自己填补空白。
您可以使用属性名称是索引并且属性值是值的对象,然后通过中介函数运行它以创建稀疏数组?
function getSparseArray(obj) {
var ary = [];
for (prop in obj) {
var i = parseInt(prop,10);
if (!isNaN(i)) {
ary[i] = obj[prop];
}
}
return ary;
}
你会送它像
{ "5":"Five", "11":"Eleven", "99":"Ninety-Nine"}
,并取回这是人口只有三个值的数组:
ary[5] = "Five"
ary[11] = "Eleven"
ary[99] = "Ninety-Nine"
ary[0] = 'undefined'
ary[98] = 'undefined'
etc.
ary
这里将有100的长度,但在你的意义上它将是一个“稀疏”数组。
...和“未定义”不是JSON值 – Pointy 2010-04-16 19:22:35
采取的点;因此会用null填充空缺 – 2010-04-16 20:03:28
问题是,JSON是JSON,并且没有办法直接表示“稀疏数组”,因此任何JSON解析器都能理解它。但是,如果您对在JSON的“入”和“出”方式中转换数组感到满意,那么@ Robusto的答案就是您想要查看的内容。 – Pointy 2010-04-16 20:08:11