osdir.com

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Content based router with JSONPATH (Solution found)


I found JSON path statement to query the JSON object:


when.jsonpath("$.name_value_list.account_type[?(@.value=='Customer')]")


On 05/22/2018 08:12 AM, Michael Joyner wrote:

Hi everyone.

This might be a easy question, I have been fighting with it for a couple hours. I have a JSON array that is sent to a splitter to process each JSON object.

HERE'S SAMPLE JSON BODY:

{
    "id": "2b144adc-1af4-1446-e22a-58b367d22272",
    "module_name": "Accounts",
    "name_value_list": {
        "name": {
            "name": "name",
            "value": "Tri-State Medical Corp"
        },
        "account_type": {
            "name": "account_type",
            "value": "Customer"
        },
        "industry": {
            "name": "industry",
            "value": "Environmental"
        },
        "annual_revenue": {
            "name": "annual_revenue",
            "value": ""
        },
        "rating": {
            "name": "rating",
            "value": ""
        }

    }
}

Here's my route, I can't seem to find the right syntax to get jsonpath() to evaluate like XPATH. It wont run because the JSON path string isn't happy.

from("file:///opt/talend/esb/talend-esb-csv-to-xml/data1?noop=true&autoCreate=true&flatten=false&fileName=accounts.json)
                .split()
                .jsonpath("$.entry_list[*]")

                .choice()

                   .when().jsonpath( *"**$.name_value_list.account_type.value = 'Customer'*"   )
                      .log("CUSTOMER \n ${body}")

                   .when().jsonpath(  "*$.name_value_list.account_type.value = 'Vendor'*"  )
                      .log("VENDOR\n ${body}")