使用数字作为“索引”(JSON)
最近开始挖掘到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);
有没有办法做到这一点? 像Game.status[0].0
会使我的生活方式更容易。 当然,还有其他的方法,但这种方式是首选。
JSON只允许键名是string。 这些string可以由数值组成。
你不使用JSON。 你有一个JavaScript对象文字。 您可以使用密钥标识符,但标识符不能以数字开头。 你仍然可以使用string。
var Game={ "status": [ { "0": "val", "1": "val", "2": "val" }, { "0": "val", "1": "val", "2": "val" } ] }
如果使用点符号访问属性,则必须使用标识符。 使用方括号表示法: Game[0][0]
。
但是考虑到这些数据,一个数组似乎更有意义。
var Game={ "status": [ [ "val", "val", "val" ], [ "val", "val", "val" ] ] }
可能你需要一个数组?
var Game = { status: [ ["val", "val","val"], ["val", "val", "val"] ] } alert(Game.status[0][0]);
首先,它不是JSON:JSON要求所有的键必须是string。
其次,常规数组做你想要的:
var Game = { status: [ [ "val", "val", "val" ], [ "val", "val", "val" ] } }
将工作,如果你使用Game.status[0][0]
。 您不能使用点号( .0
)的数字。
或者,你可以引用数字(即{ "0": "val" }...
); 你将有简单的对象,而不是arrays,但相同的语法将工作。
当一个Javascript对象属性的名字不是以下划线或者字母开头时,你不能使用点符号(比如Game.status[0].0
),并且你必须使用替代符号,即Game.status[0][0]
。
一个不同的说明,你真的需要它是状态数组内的一个对象吗? 如果你像一个数组一样使用对象,为什么不用一个真正的数组呢?
关于什么
Game.status[0][0] or Game.status[0]["0"] ?
其中一个工作?
PS:你有什么问题是一个Javascript对象,而不是JSON。 JSON是Javascript对象的“string”版本。