【问题标题】:Accessing Multipule Arrays From JSON从 JSON 访问多个数组
【发布时间】:2011-09-20 17:41:26
【问题描述】:

我有一些带有元素属性的 JSON,其中一个 JSON 元素具有多个数组的值。如果有一个数组,我已经弄清楚如何访问该数组,但我不确定如何访问第二个。

我也可以知道如何将新数组推送到 JSON 值。

这就是我所拥有的

    $(this).attr({
"data-settings": $.toJSON({ nPosX: newPX, nPosY: newPY, oPosX: oldPX, oPosY: oldPY, moves: ["val"]["key"] })
});

var movesObj = $.parseJSON($(this).attr('data-settings'));

moves 是保存数组的位置。

提前致谢!

【问题讨论】:

  • moves: ["val"]["key"] 并没有像你想象的那样做。它将尝试访问["val"] 数组的key 属性。该属性不存在,因此返回undefined。因此,结果是moves: undefined。您究竟希望moves 的结构如何?一个数组或数组?一个有两个元素的数组?
  • 如果您使用movesObj.moves[0],您可以访问“val”。最好和数组数组。
  • 使用那个设置?我对此表示怀疑:jsfiddle.net/g7E7C 无论如何,您绝对应该阅读有关arrays in JavaScript 的信息。如果你想让movesObj.moves[0] 返回val,那么它似乎需要一个包含两个元素的数组:moves: ["val", "key"]

标签: arrays json attributes element


【解决方案1】:

嗯,对我来说,这似乎不是一个有效的 JSON。你不能定义这样的 JSON。您可以像散列一样定义移动:

moves: {"val":"key"}

您可以像这样访问它:moves.valmoves["val"]

或者您将移动定义为哈希数组:

moves: [{"val":"key"}, ...]

您可以像这样访问它:moves[0].valmoves[0]["val"]

如果你想要一个这样的嵌套哈希,你需要像这样定义它:

moves: {"val": {"key":"value"}}

并像 moves["val"]["key"]moves.val.key

一样访问它

【讨论】:

【解决方案2】:

您能否更具体地说明您要做什么?

如果你有嵌套数组并且你想从一个内部数组中访问一个值,那么语法是

myArray["key1"]["key2"]

myArray.foo.bar

【讨论】:

  • 我正在尝试从 JSON 元素 moves 访问“val”和“key”
  • 您能否编辑问题以包含有关moves 数组应该做什么的一些想法?正如上面 Felix 所说,["key"]["val"] 不是你想做的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-07
  • 1970-01-01
  • 1970-01-01
  • 2020-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多