【问题标题】:how to parse json based on index number of object如何根据对象的索引号解析json
【发布时间】:2021-06-07 18:33:22
【问题描述】:

我有 json 格式的数据,我需要访问数组中每个对象中包含的数据。因此,例如,如果我需要第二个对象中的时间戳(即“202103092000”),我需要使用什么语法将第二个对象中的“句点”的值分配给指定的 var?我已经尝试过这种方法的变体,但它似乎不起作用:

var data4 = JSON.parse(message.payloadString);
fcperiod2 = data4.[1].period;

解析的json数据如下。我无法控制它的格式,因为它来自 api。

[{
    "period": "202103092000",
    "condition": "A mix of sun and cloud",
    "temperature": "0",
    "icon_code": "02",
    "precip_probability": "0"
}, {
    "period": "202103092100",
    "condition": "Mainly sunny",
    "temperature": "2",
    "icon_code": "01",
    "precip_probability": "0"
}, {
    "period": "202103092200",
    "condition": "Sunny",
    "temperature": "2",
    "icon_code": "00",
    "precip_probability": "0"
}, {
    "period": "202103092300",
    "condition": "Sunny",
    "temperature": "3",
    "icon_code": "00",
    "precip_probability": "0"
}]

感谢您的任何指点。

猴面包树

【问题讨论】:

  • 你确定每次加载时元素在集合中的位置都保持不变吗?
  • 它仍然是一个数组。你不放一个 .在索引之前。 data4.[1].period 应该是 data4[1].period
  • 不应该是data4[1]。期间?
  • 请访问help center,使用tour查看内容和How to Ask。做一些研究,搜索关于SO的相关主题;如果您遇到困难,请发布您尝试的minimal reproducible example,注意输入和预期输出,最好在Stacksnippet
  • 感谢您的帮助。这么简单的错误,我浪费了两个小时——显然编码不是我的事。至于用最小的可重现示例提出问题,我认为我提供的正是如此。我什至花时间学习了一个 json 对象的不同部分叫什么...

标签: javascript jquery json parsing


【解决方案1】:

它仍然是一个数组,因此您不会使用 .[4] 将其作为属性访问,您可以通过说 data4[X].period 来获取实际数组的 X 元素

TLDR; 替换数据4.[1] with data4[1].period

let message = { payloadString: [{
    "period": "202103092000",
    "condition": "A mix of sun and cloud",
    "temperature": "0",
    "icon_code": "02",
    "precip_probability": "0"
}, {
    "period": "202103092100",
    "condition": "Mainly sunny",
    "temperature": "2",
    "icon_code": "01",
    "precip_probability": "0"
}, {
    "period": "202103092200",
    "condition": "Sunny",
    "temperature": "2",
    "icon_code": "00",
    "precip_probability": "0"
}, {
    "period": "202103092300",
    "condition": "Sunny",
    "temperature": "3",
    "icon_code": "00",
    "precip_probability": "0"
}]
}

var data4 = message.payloadString;
fcperiod2 = data4[1].period;
console.log(fcperiod2)

【讨论】:

    【解决方案2】:

    在这种情况下,您有一个 Array 和几个 Objects。您只需使用data4[1] 就可以在数组中的某个位置获取对象。要获取键 period 的值,可以使用 data4[1].period

    【讨论】:

      【解决方案3】:

      您可以提取所有句点,然后再决定要哪个句点

      const data = [{
          "period": "202103092000",
          "condition": "A mix of sun and cloud",
          "temperature": "0",
          "icon_code": "02",
          "precip_probability": "0"
      }, {
          "period": "202103092100",
          "condition": "Mainly sunny",
          "temperature": "2",
          "icon_code": "01",
          "precip_probability": "0"
      }, {
          "period": "202103092200",
          "condition": "Sunny",
          "temperature": "2",
          "icon_code": "00",
          "precip_probability": "0"
      }, {
          "period": "202103092300",
          "condition": "Sunny",
          "temperature": "3",
          "icon_code": "00",
          "precip_probability": "0"
      }]
      const periods = data.map(({period}) => period)
      console.log(periods)
      console.log(periods[1])

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-28
        • 1970-01-01
        • 2013-06-09
        • 1970-01-01
        • 2012-09-28
        • 2017-09-24
        • 1970-01-01
        相关资源
        最近更新 更多