Hi Shazni,

There should some information in the xml message to tell that it is an
array when there is only one element. Otherwise, JSON builder cannot figure
out it is an array. You can use the following in the xml message to
instruct the consumers about array.

*<?xml-multiple?>*

<users>

    <user>user1</user>

</users>





On Wed, Mar 2, 2016 at 12:35 AM, Shazni Nazir <[email protected]> wrote:

> Hi,
>
> Say for example used a proxy below [1] to convert an xml to json.
>
> [1]
>
> <proxy xmlns="http://ws.apache.org/ns/synapse"; name="XmlToJSON"
> transports="https,http" statistics="disable" trace="disable"
> startOnLoad="true">
>     <target>
>         <inSequence>
>             <property name="messageType" value="application/json"
> scope="axis2"/>
>             <respond/>
>         </inSequence>
>     </target>
>     <description/>
> </proxy>
>
> using a payload like [2] returns a response like [3] with a json array.
>
> [2]
>     <users>
>     <user>user1</user>
>     <user>user2</user>
>     </users>
>
> [3]
>
> {
>   "users": {
>     "user": [
>       "user1",
>       "user2"
>     ]
>   }
> }
>
> using a payload like [4] returns a response like [5] without square brackets, 
> since there's only one element.
>
> [4]
>       <users>
>               <user>user1</user>
>       </users>
>
> [5]
>
> {
>   "users": {
>     "user": "user1"
>   }
> }
>
> But I need to get this user1 in an array even if there's only one element in 
> the array. I can however use a payload factory with a filter mediator like 
> below to achieve this. Wondering if there's any other simple way to achieve 
> without this? Your input is appreciated.
>
> [6]
>
> <filter source="json-eval($.StockQuotes.Stock.Symbol)" regex="null">
>     <then>
>         <payloadFactory media-type="json">
>             <format>{ "StockQuotes": { "Stock": $1 } }</format>
>             <args>
>                 <arg evaluator="json" expression="$.StockQuotes.Stock"/>
>             </args>
>         </payloadFactory>
>     </then>
>     <else>
>         <payloadFactory media-type="json">
>             <format>{ "StockQuotes": { "Stock": [ $1 ] } }</format>
>             <args>
>                 <arg evaluator="json" expression="$.StockQuotes.Stock"/>
>             </args>
>         </payloadFactory>
>     </else>
> </filter>
>
> Shazni Nazeer
> Mob : +94 777737331
> LinkedIn : http://lk.linkedin.com/in/shazninazeer
> Blog : http://shazninazeer.blogspot.com
>



-- 
Thank you and Best Regards,
Chanaka Fernando
Senior Technical Lead
WSO2, Inc.; http://wso2.com
lean.enterprise.middleware

mobile: +94 773337238
Blog : http://soatutorials.blogspot.com
LinkedIn:http://www.linkedin.com/pub/chanaka-fernando/19/a20/5b0
Twitter:https://twitter.com/chanakaudaya
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to