处理稀疏数组的JSON实现

时间:2010-04-16 19:04:11

标签: javascript arrays json sparse-array

我需要知道是否有任何JSON实现可以处理稀疏数组,令我满意。我已经看到了这个问题:How to represent a sparse array in JSON?但是使用对象而不是数组对我来说不是一个选择;我需要一个数组。

我的最低要求是实施填补“未定义”的任何空白。否则,我正在编写防御性代码,在JSON编码之前填补空白。

2 个答案:

答案 0 :(得分:5)

不可能。忘记实现,这在规范中是不允许的。

http://json.org/

数组仅由值定义。对象用于索引/键有意义的时候。

答案 1 :(得分:2)

您是否可以使用属性名称为索引且属性值为值的对象,然后通过中间函数运行它以创建稀疏数组?

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,但在你看来它将是一个“稀疏”阵列。