【问题标题】:How to access the value in key value pair when the key is a changing value?当键是变化的值时,如何访问键值对中的值?
【发布时间】:2014-03-06 19:45:23
【问题描述】:

我有这个 JSON 数据存储在变量 result 中,现在我想访问 result.metadata.data.s1[1].lily 的值,但是密钥 Lily 是未知的,它可能会在服务器端发生变化,所以我将密钥存储为一个变量,例如var key1 = "Lily"。如何使用这个var key1 访问值?

{
         "metadata":{

            "data":{
               "s1":[
                  {
                     "Lily":"chat",
                     "time":10
                  },
                  {
                     "Mancy":"chat1",
                     "time":10
                  },
                  {
                     "John":"chat2",
                     "time":10
                  }
               ],
               "s2":[
                  {
                     "Lan":"chat3",
                     "time":10
                  },
                  {
                     "Yoyo":"chat6",
                     "time":10
                  }
               ]
            }
         }

}

【问题讨论】:

标签: json


【解决方案1】:

如果您始终知道它是列表中的第一项,括号表示法应该可以正常工作。

result.metadata.data.s1[0][key1];

如果您不确定它落在哪里,那么 [0] 并不总是正确的,您必须遍历 result.metadata.data.s1 数组中的所有项目才能找到它。

您上面的代码正在获取列表中的第二个项目,索引为[1],其中的键不是“Lily”,而是“Mancy”。

Here's a codepen demo

【讨论】:

  • data.metadata.data.s1[0]object 而不是 array,您无法通过这种方式访问​​值
  • @Blake- 对,data.metadata.data.s1 是数组。 data.metadata.data.s1[0] 是该数组中的第一个对象。它包含“Lily”键。
  • 添加了工作代码笔。括号符号似乎工作正常,除非我错过了什么。
  • 嗯,我的错,为什么我有这样的印象,对象中的值可以通过这种方式访问​​......没关系。
猜你喜欢
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-13
  • 2018-10-06
  • 1970-01-01
  • 2013-09-07
相关资源
最近更新 更多