Search code examples
wso2

How to get json property when I use the Property Mediator?


I use the Property Mediator to get a registry resource, it returns me a json string, but how can I get the property in the json string? my code example:

test-file.json like so
{
    "mappings": {
        "mapping": {
            "ep_1": "http://localhost:8280/services/ep_1",
            "ep_2": "http://localhost:8280/services/ep_2",
            "ep_3": "http://localhost:8280/services/ep_3"
        }
    }
}

I do like this:


<property expression="get-property('registry','conf:customresource/test-file.json')" name="JsonContent" scope="default" type="STRING"/>
<property expression="????" name="endpointUrl" />

how to get the property 'ep_1' in the 'endpointUrl' Or is there any other way to get the property 'ep_1'? thx


Solution

  • I have done with this question.You have to use XML content instead of JSON, then set content into a Property Mediator which type filed is OM, and you can use xpath expression to get any value you want in your XML content. code example

    XML content:
    <mappings>
        <mapping>
            <ep_1>http://localhost:8280/services/ep_1</ep_1>
            <ep_2>http://localhost:8280/services/ep_2</ep_2>
            <ep_3>http://localhost:8280/services/ep_3</ep_3>
        </mapping>
    </mappings>
    
    <property expression="get-property('registry','conf:customresource/test-file.xml')" name="XmlContent" scope="default" type="OM"/>
    <property expression="$ctx:XmlContent/mapping/ep_1" name="endpointUrl" />
    

    After that, the value will been set into the property named endpointUrl. Last, please note the expression of second Property mediator,you get black value if you do like this $ctx:XmlContent/mappings/mapping/ep_1.Hope its helpful for someone.