【问题标题】:How to represent a sparse array in JSON?如何在 JSON 中表示稀疏数组?
【发布时间】:2009-11-14 08:11:06
【问题描述】:

我有一个稀疏数组,我想用 JSON 表示。例如:

  -10 => 100
   -1 => 102
    3 => 44
   12 => -87
12345 => 0

我该怎么做?我可以这样做吗?

【问题讨论】:

    标签: json sparse-array


    【解决方案1】:

    您可以将其表示为一个简单的对象:

    {
      "-10" : 100,
      "-1" : 102,
      "3" : 44,
      "12" : -87,
      "12345" : 0
    }
    

    因为它是一个简单的对象,你不能像数组一样迭代它,但你可以使用for...in 语句:

    for (var key in obj) {
      if (obj.hasOwnProperty(key)) {
        var value = obj[key];
      }
    }
    

    如果你想通过键访问特定元素,你也可以在这里使用方括号property accessor

    obj['-10']; // 100
    

    请注意,我在for...in 循环中使用hasOwnProperty 方法,这是为了防止在原型链的更高级别上定义的迭代属性,这可能会导致问题和意外行为...更多信息here

    【讨论】:

    • 是的,我认为无论如何你都不能以正常的方式将它作为一个数组进行迭代,因为存在负索引。它是对象。
    【解决方案2】:

    是的,你可以。 JSON 对象成员名称是字符串。字符串可以保存任何 UTF-8 编码的值:

    {
      "-10"   : 100,
      "-1"    : 102,
      "3"     : 44,
      "12"    : -87,
      "12345" : 0
    }
    

    【讨论】:

      猜你喜欢
      • 2018-10-16
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      • 2018-08-22
      • 1970-01-01
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多