我正在从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
}
}
}
任何人都知道我做错了什么? 感谢
答案 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字符串中出现两次。