Is there a way parse an array without a function node? For example, if the data I'm receiving is in the form: msg.payload.value[0-9].anothervalue, can I split it and grab the 10 anothervalues without doing a for loop in a function? Thanks.
Yes - split node
msg.payload --> split --> change node --> join --> result
Yes by using Jsonata in a change node.
The expression would be something like
$$.payload.value.anothervalue
example flow
[{"id":"39a194fd.20cbcc","type":"inject","z":"bf9e1e33.030598","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"value\":[{\"another_value\":1},{\"another_value\":2},{\"another_value\":3}]}","payloadType":"json","x":140,"y":2180,"wires":[["8ef7ccd6.f2584"]]},{"id":"8ef7ccd6.f2584","type":"change","z":"bf9e1e33.030598","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"$$.payload.value.another_value","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":2220,"wires":[["7dae4206.4a76f4"]]},{"id":"7dae4206.4a76f4","type":"debug","z":"bf9e1e33.030598","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":620,"y":2080,"wires":[]}]
Sorry I'm not clear how that would work. The msg.payload looks like this:
msg
- payload
-- values
--- value [0 ... 9]
---- 0
----- string
----- string2
---- 1 (etc etc up to 9)
--- value [10 ... 19]
---- etc etc up to the end of the array
So I'm trying to figure out if there's a way for NR to get me all those string and string2 without using a for loop in a function node.
I understand change node and splitting; what I don't understand is the formatting (if it exists) like if I want to extract all the values of "string" from above, is the Change Node set msg.payload to... to what? msg.payload.values.value[XXXX].string ? Thanks.
best to use the copy value button in debug node, it appears when you hover mouse to right of payload object. Then paste here using </> botton.
Then supply the output you want from that array, i.e.[string,string1,string,string1]
or [[string,string1],[string,string1]], etc. Then it will be clear what the input is and what the output should look like.
Also do you wish to do this in a function node or outside.
Here - payload.properties.apparentTemperature.values has 140 array values broken up into chunks of 10 ([0-9], [10-19], etc.) starting with payload.properties.apparentTemperature.values[0]. Each value in the array contains a timestamp which looks like this payload.properties.apparentTemperature.values[0].validTime.
I'm trying to extract the 140 validTime values without involving a Function node at all. Is there a way to do that or is it impossible in NR without writing a function?
I don't understand the point not to use a function. Unless you like to make your Life harder
If that is the valid path, then the jsonata expression to use in a change node would be
$$.payload.properties.apparentTemperature.values.validTime
and it would return 140 validTime values in an array
Again if you supply a sample data and what you want outputted, then i would provide an example
That in conjunction with split worked great. I don't know Jsonata so it didn't even occur to me that it might be an option for my use case so thanks.