0
votes

I am trying to select data from a JSON request based on one of the field

[
    {
        "Field1": "data1",
        "Field2": "set1",
        "Field3": "reset1"
    },
    {
        "Field1": "data2",
        "Field2": "set2",
        "Field3": "reset2"
    },
    {
        "Field1": "data3",
        "Field2": "set3",
        "Field3": "reset3"
    },
    {
        "Field1": "data4",
        "Field2": "set4",
        "Field3": "reset4"
    }
]

I want to select string value of field3 where field2 is "set3". That is "reset3".

DWL I tried:

payload.Field3 filter (payload.Field2 ==["set3"])
2

2 Answers

1
votes

You can filter like this:

<logger level="ERROR" message="Field3:::: #[(payload filter ($.Field2 =='set3'))[0].Field3]" />

Filter returns array since the array selector [0] if there is chance of more than one result you may want to change the expression.

0
votes

Use can use this DW expression:

%dw 1.0
%output application/json
---
payload filter ($.Field2=="set3") map {
    Field3: $.Field3
}

Result:

[
   {"Field3": "reset3"}
]