โ07-13-2023 09:40 PM
Hi All,
Good morning,
I have a requirement for converting json into xml with attributes.
So, I understood in order to make the XML with attributes from json, I have to have below structure of json to be feed to xml formatter for final conversion.
Required JSON format,
[
โh1โ: {
โh2โ:{
โfโ:[
{โ@nameโ:โField1โ,โ$โ:โ10/3930โ},
{โ@nameโ:โField2โ,โ$โ:โtrueโ}
]
}
}
]
My Original json is like this
[
{
โField1โ:โ10/3930โ
โField2โ:โtrueโ
}
]
How to convert original json to required json structure for XML formatter.
Any help will be much appreicated.
Regards,
San
โ07-14-2023 09:29 AM
Maybe the following expression will provide some assistance to get you close.
{"h1": { "h2": {f: $.entries().map(x => {"@name": x[0],"$": x[1]}) }}}
This expression combines the Object entries() and the Array map() functions together to build out the transformation and embeds the result into a hard-coded wrapper object for the complete body.
The attached Pipeline shows the expression in practice:
Community.17106.slp (4.7 KB)
I hope this helps
โ07-16-2023 10:56 PM
Thanks Del.
It works like a charm, but I had another issue with given expression.
Usually, when we have blank value in xml, the closing field name should be removed. It doesn;t work with above expression.
For example, when Field2 is blank, it should completely remove the $ value. I tried filter function on values ($.filter((val, key) => (val != โโ))), but it was not working as it works on entire column($) after conversion as per our expression.
Desired output, when field2 is blank
[
โh1โ: {
โh2โ:{
โfโ:[
{โ@nameโ:โField1โ,โ$โ:โ10/3930โ},
{โ@nameโ:โField2โ}
]
}
}
]
Regards,
San
โ07-17-2023 06:53 AM
I think you can add your filter expression within the complete expression where the new object is being created:
{"h1": { "h2": {f: $.entries().map(x => {"@name": x[0],"$": x[1]}.filter((val, key) => (val != ''))) }}}