如何访问 JSON 对象数组的第一个元素?
Posted
技术标签:
【中文标题】如何访问 JSON 对象数组的第一个元素?【英文标题】:How to access first element of JSON object array? 【发布时间】:2015-05-15 22:51:25 【问题描述】:我预计 mandrill_events 只包含一个对象。如何访问其event-property
?
var req = mandrill_events: '["event":"inbound","ts":1426249238]'
【问题讨论】:
这是一个字符串,而不是一个对象。您需要先使用JSON.parse(str)
将字符串解析为对象。
***.com/questions/4935632/parse-json-in-javascript
JSON.parse(req[mandrill_events])[0].event
将返回 "inbound"
。
@Mr.Polywhirl 与否.. JSON.parse(req.mandrill_events)[0]["event"]
会
@Haketo:是的,我忘了去掉括号...
【参考方案1】:
'["event":"inbound","ts":1426249238]'
是一个字符串,你不能访问那里的任何属性。您必须使用 JSON.parse()
将其解析为对象,然后像处理普通对象一样处理它
【讨论】:
【参考方案2】:用 Javascript 解析后,试试这个:
mandrill_events[0].event
【讨论】:
【参考方案3】:事件属性似乎是字符串首先你必须将其解析为 json :
var req = mandrill_events: '["event":"inbound","ts":1426249238]' ;
var event = JSON.parse(req.mandrill_events);
var ts = event[0].ts
【讨论】:
【参考方案4】:要回答您的名义问题,您使用[0]
访问第一个元素,但就目前而言,mandrill_events
包含一个字符串而不是数组,因此mandrill_events[0]
只会为您提供第一个字符“[”。
所以要么将您的来源更正为:
var req = mandrill_events: ["event":"inbound","ts":1426249238] ;
然后是req.mandrill_events[0]
,或者如果您不知道它是一个字符串,请解析该字符串包含的 JSON:
var req = mandrill_events: '["event":"inbound","ts":1426249238]' ;
var mandrill_events = JSON.parse(req.mandrill_events);
var result = mandrill_events[0];
【讨论】:
感谢您指出如果变量是字符串而不是对象,[
将作为内容返回【参考方案5】:
var req = mandrill_events: '["event":"inbound","ts":1426249238]'
console.log(Object.keys(req)[0]);
创建任何 Object 数组 (req
),然后只需执行 Object.keys(req)[0]
即可选择 Object 数组中的第一个键。
【讨论】:
虽然总是欢迎回答,但包括对如何代码解决问题的简要说明对其他人更有帮助。它还降低了帖子最终进入“非常低质量”队列的可能性(就像这个一样)。 您的回答帮助了我,但需要注意的一件事是Object.keys(req)[0]
将返回该数组中对象的 id,以便获得您需要的实际值:mandrill_events[Object.keys(req)[0]].event
以及如何使用此代码获取值?
event
和 ts
?【参考方案6】:
假设mandrill_events
的内容是一个对象(不是字符串),你也可以使用shift()
函数:
var req = mandrill_events: ["event":"inbound","ts":1426249238] ;
var event-property = req.mandrill_events.shift().event;
【讨论】:
【参考方案7】:我会用一个通用的例子来解释这个:
var obj = name: "John", age: 30, city: "New York" ;
var result = obj[Object.keys(obj)[0]];
结果变量的值为“John”
【讨论】:
以上是关于如何访问 JSON 对象数组的第一个元素?的主要内容,如果未能解决你的问题,请参考以下文章