I have a Logic App that is being triggered when there is a Security Alert in Security Center.
I have a step where I map a subset of the inputs into a JSON document and use that to create a file.
I need the JSON document that I'm creating to all be in one line, so I need to make sure I replace any control line feeds in the inputs.
Example input:
{
"headers": {
"Content-Type": "application/json"
},
"body": {
"RemediationSteps": "[\r\n \"1. Enforce the use of strong passwords\",\r\n \"2. Add the source IP to NSG block list for 24 hours\",\r\n \"3. Create an allow list for RDP access in NSG\"\r\n]"
}
}
My mapping (in the Designer):
replace(triggerBody()?['RemediationSteps'], '\r\n', ' ')
However, I'm still getting new lines in my JSON document.
When edited in design view, logic apps adds a backslash to the original backslash to cancel it out. If you go to Code view you can remove it manually.
From:
"value": "@{replace(items('...')['...'],'\\\r\\\n',' ')}"
To:
"value": "@{replace(items('...')['...'],'\r\n',' ')}"
The above solutions didn't work for me in a Microsoft Flow as the web editor adds extra backslashes. There is no code editor option. What worked was to uri encode the string and then to do a replace:
decodeUriComponent(replace(uriComponent(body('bodyitem')?['bodykey']),'%0A','%3Cbr%3E'))
'%0A' is the '\n' uriencoded and '%3Cbr%3E' is '<br>' uriencoded.
First encode, do the replace then decode. Hope this helps!
I had a similar problem. You have to literally use an "enter". This is what it looks like:
json(concat('{"items":',string(split(outputs('GetAttachmentContent'),'')),'}'))
Hope it helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With