按订单访问JSON信息

时间:2014-10-05 15:16:07

标签: javascript json node.js

我正在从JSON字符串中读取信息,并在执行时    console.log(record.seenTime.time.seenEpoch) 它显示正确的信息。

但是当我使用console.log(record.seenTime.time[0].seenEpoch)时,我收到错误消息:

TypeError: Cannot read property 'seenEpoch' of undefined

以下是一组示例数据:

  { 
    seenTimes: { 
      time: { 
        seenTime: '2014-09-10T20:18:32Z',
        seenEpoch: 1410380312 
      }
    } 
  }

任何人都知道我做错了什么? 感谢

1 个答案:

答案 0 :(得分:1)

在这种情况下,

record.seenTimes是一个Object,而不是一个数组,您可以使用

验证
typeof record.seenTimes

因此,time [0]返回undefined。

seenEpoch是ONE AND ONLY时间对象的属性,因此,您可以使用record.seenTimes.time.seenEpoch

访问它

有一次,我建议您阅读w3schools的内容:JSON Syntax

它将向您展示可以存储在JSON中的内容的示例。

编辑:

您的示例record.seenTimes将无法存储多个时间对象,因为它使用大括号{}表示它意味着存储对象,如果您想成为能够存储多个时间对象,即:一个数组,你的JSON必须看起来像:

record {
  seenTimes: [
    {
      time: {
        seenTime: '2014-09-10T20:18:32Z',
        seenEpoch: 1410380312 
      }
    },
    {
      time: {
        seenTime: '2014-09-10T20:18:32Z',
        seenEpoch: 1410380312 
      }
    }
  ]
}

请注意,表示seenTime持有数组的方括号。

正如slebetman所说:

  

另请注意,在javascript中,一个对象被定义为具有多个   相同的键在技术上无效。但大多数实现都需要   最后的定义。例如,对象:{a:1,a:2,a:3}正是如此   与{a:3}相同。因此,如果您不使用数组,那么只有一个   时间对象,即使它在JSON字符串中出现两次。