1
votes

I have a string like this (which looks like a map)

{key1=value1;key2=value2;key3=value3;...keyn=valuen;}

which I want to either convert to a java object or as a JSON payload like this:

{"key1" : "value1","key2" : "value2","key3" : "value3",..."keyn" : "valuen"}

Is there a mule way to do it ? I am trying to avoid writing a custom java class for this problem. Something which data weave can help?

2

2 Answers

1
votes

Use this to get map

%dw 1.0
%output application/json
---
{((payload replace /[{}]/ with "" splitBy ";")  map using (data = $ splitBy "="){
    (data[0]) : data[1]
})}

Hope this helps.

1
votes

I have used following in dataweave to manipulate string.

%dw 1.0
%output application/json
---
(payload replace /[{}]/ with "" splitBy ";")  map using (data = $ splitBy "=")   {
    (data[0]) : data[1]
}

Input data :-

"{key1=value1;key2=value2;key3=value3;keyn=valuen}"

Output :-

[
  {
    "key1": "value1"
  },
  {
    "key2": "value2"
  },
  {
    "key3": "value3"
  },
  {
    "keyn": "valuen"
  }
]

Hope this helps..