39

I exptect that mandrill_events only contains one object. How do I access its event-property?

var req = { mandrill_events: '[{"event":"inbound","ts":1426249238}]' }
Hedge
  • 16,142
  • 42
  • 141
  • 246

7 Answers7

42
var req = { mandrill_events: '[{"event":"inbound","ts":1426249238}]' }

console.log(Object.keys(req)[0]);

Make any Object array (req), then simply do Object.keys(req)[0] to pick the first key in the Object array.

Anuga
  • 2,619
  • 1
  • 18
  • 27
  • 1
    While answers are always welcome, including a brief explanation of *how* the code solves the problem is more helpful to others. It also reduces the likelihood the post will end up in the "Very-Low-Quality" queue (as this one did). – Leigh Feb 27 '17 at 19:53
  • 1
    Your answer helped me out, but one thing that should be noted is that `Object.keys(req)[0]` will return you the id of the object in that array, so to get the actual value you need: `mandrill_events[Object.keys(req)[0]].event` – Bagzli Jun 07 '17 at 21:45
  • and how do I get the value using this code? – themhz Feb 13 '21 at 12:33
  • `event` and `ts`? – Anuga Feb 15 '21 at 01:58
29

To answer your titular question, you use [0] to access the first element, but as it stands mandrill_events contains a string not an array, so mandrill_events[0] will just get you the first character, '['.

So either correct your source to:

var req = { mandrill_events: [{"event":"inbound","ts":1426249238}] };

and then req.mandrill_events[0], or if you're stuck with it being a string, parse the JSON the string contains:

var req = { mandrill_events: '[{"event":"inbound","ts":1426249238}]' };
var mandrill_events = JSON.parse(req.mandrill_events);
var result = mandrill_events[0];
stovroz
  • 6,835
  • 2
  • 48
  • 59
7

I'll explain this with a general example:

var obj = { name: "John", age: 30, city: "New York" };
var result = obj[Object.keys(obj)[0]];

The result variable will have the value "John"

Toshik Langade
  • 758
  • 7
  • 13
6

the event property seems to be string first you have to parse it to json :

 var req = { mandrill_events: '[{"event":"inbound","ts":1426249238}]' };
 var event = JSON.parse(req.mandrill_events);
 var ts =  event[0].ts
semirturgay
  • 4,151
  • 3
  • 30
  • 50
1

'[{"event":"inbound","ts":1426249238}]' is a string, you cannot access any properties there. You will have to parse it to an object, with JSON.parse() and then handle it like a normal object

Dimitris Karagiannis
  • 8,942
  • 8
  • 38
  • 63
0

After you parse it with Javascript, try this:

mandrill_events[0].event
Qutayba
  • 197
  • 9
0

Assuming thant the content of mandrill_events is an object (not a string), you can also use shift() function:

var req = { mandrill_events: [{"event":"inbound","ts":1426249238}] };
var event-property = req.mandrill_events.shift().event;
lluisma
  • 101
  • 1
  • 6