# Converting payload.object to an array

**URL:** <https://discourse.nodered.org/t/converting-payload-object-to-an-array/53888>\
**Category:** General\
**Created:** [17 November 2021 14:26 UTC](https://discourse.nodered.org/t/converting-payload-object-to-an-array/53888 "2021-11-17T14:26:53Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![TROJAN053](https://avatars.discourse-cdn.com/v4/letter/t/7cd45c/32.png) [@TROJAN053](https://discourse.nodered.org/u/TROJAN053)\
**Post date:** [17 November 2021 14:26 UTC](https://discourse.nodered.org/t/converting-payload-object-to-an-array/53888/1 "2021-11-17T14:26:53Z")

</div>

![object](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/0/c/0c34448070ca8e2a1acbd03e8ccf545c69555421.jpeg)  
 ![array](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/4/1/4177665ee1c7b12c2549b0899c4893c6dc1c1cc5.jpeg)

hi,  
I wanted to convert my payload.object in form of array. Please help  
New to this Node red family.

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [17 November 2021 14:42 UTC](https://discourse.nodered.org/t/converting-payload-object-to-an-array/53888/2 "2021-11-17T14:42:21Z")

</div>

You will need to specify what format you want, if you do a direct conversion, you will loose the property names of course.

In code, the simple way to do a direct conversion is:

```auto
const myarray = Object.values(msg.payload)

```

---

<div class="post-metadata">

**Author:** ![TROJAN053](https://avatars.discourse-cdn.com/v4/letter/t/7cd45c/32.png) [@TROJAN053](https://discourse.nodered.org/u/TROJAN053)\
**Post date:** [17 November 2021 14:50 UTC](https://discourse.nodered.org/t/converting-payload-object-to-an-array/53888/3 "2021-11-17T14:50:19Z")

</div>

![array1](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/4/e/4ef3f78bb82479b744a9f4b0d66fa9386e963f39.jpeg)

I want in this format. Where Id will come with topic and V will come with value.

---

<div class="post-metadata">

**Author:** ![shrickus](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/shrickus/32/517_2.png) [@shrickus](https://discourse.nodered.org/u/shrickus)\
**Post date:** [17 November 2021 16:28 UTC](https://discourse.nodered.org/t/converting-payload-object-to-an-array/53888/4 "2021-11-17T16:28:22Z")

</div>

There are many ways to restructure your JS object into an array of values. My personal favorite is to use a JSONata expression inside of a `change` node -- something like this:

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/6/1/6139a9b68f1c247c436647e24584f24eb49d7098.png)

Note: the JSONata expression is not Javascript... it's a lambda function that "spreads" each field of the object into an array of key:val pairs, then builds those into an array of objects with "id" and '"v" fields to hold the topic+key and the value, respectively:

```auto
payload.$spread().{
    'id': $$.topic & '.' & $keys()[0],
    'v': *
}

```

It's a lot to take in, I know, but a very powerful language to understand. If you are interested, check out [docs.jsonata.org](http://docs.jsonata.org) for more info.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [16 January 2022 16:28 UTC](https://discourse.nodered.org/t/converting-payload-object-to-an-array/53888/5 "2022-01-16T16:28:59Z")

</div>

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.
