使用数字作为"索引"(JSON)

Zar*_*Zar 71 javascript json identifier

最近开始挖掘JSON,我现在正在尝试使用一个数字作为"标识符",这不是很好.foo:"bar"工作正常,而0:"bar"不是.

var Game = {
    status: [
                {
                    0:"val",
                    1:"val",
                    2:"val"
                },
                {
                    0:"val",
                    1:"val",
                    2:"val"
                }
           ]
}

alert(Game.status[0].0);
Run Code Online (Sandbox Code Playgroud)

有没有办法按以下方式进行?类似的东西Game.status[0].0会让我的生活变得更轻松.当然还有其他方法,但这种方式是首选.

Que*_*tin 108

JSON只允许键名是字符串.这些字符串可以包含数值.

你不是在使用JSON.你有一个JavaScript对象文字.您可以使用标识符作为键,但标识符不能以数字开头.你仍然可以使用字符串.

var Game={
    "status": [
        {
            "0": "val",
            "1": "val",
            "2": "val"
        },
        {
            "0": "val",
            "1": "val",
            "2": "val"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

如果使用点表示法访问属性,则必须使用标识符.使用方括号表示法:Game[0][0].

但鉴于这些数据,阵列似乎更有意义.

var Game={
    "status": [
        [
            "val",
            "val",
            "val"
        ],
        [
            "val",
            "val",
            "val"
        ]
    ]
}
Run Code Online (Sandbox Code Playgroud)

  • 不,但会允许`Game.status [0] [0]`. (11认同)
  • @OriginalSyn不可能有'Game.status [0] .0'因为如果你想使用点符号,Javascript只允许属性名称以字母或下划线开头.没有办法解决这个问题. (3认同)

yat*_*ich 5

可能你需要一个阵列?

var Game = {

    status: [
        ["val", "val","val"],
        ["val", "val", "val"]
    ]
}

alert(Game.status[0][0]);
Run Code Online (Sandbox Code Playgroud)


Ama*_*dan 5

首先,它不是JSON:JSON要求所有键必须是字符串.

其次,常规数组做你想要的:

var Game = {
  status: [
    [
      "val",
      "val",
      "val"
    ],
    [
      "val",
      "val",
      "val"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

如果你使用,将会工作Game.status[0][0].您不能使用带点符号(.0)的数字.

或者,您可以引用数字(即{ "0": "val" }...); 您将使用普通对象而不是数组,但相同的语法将起作用.