我有一个逻辑应用程序,当安全中心中出现安全警报时会触发该应用程序。
我有一个步骤,将输入的一部分映射到JSON文档中,然后使用它来创建文件。
我需要将要创建的JSON文档全部放在一行中,因此我需要确保替换输入中的所有控制换行。
示例输入:
{
"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]"
}
}
我的映射(在设计器中):
replace(triggerBody()?['RemediationSteps'], '\r\n', ' ')
但是,我的JSON文档中仍然有新行。
答案 0 :(得分:1)
在设计视图中进行编辑时,逻辑应用程序将反斜杠添加到原始反斜杠以将其取消。如果进入“代码”视图,则可以手动将其删除。
发件人:
"value": "@{replace(items('...')['...'],'\\\r\\\n',' ')}"
收件人:
"value": "@{replace(items('...')['...'],'\r\n',' ')}"
答案 1 :(得分:1)
上述解决方案不适用于Microsoft Flow,因为Web编辑器添加了额外的反斜杠。没有代码编辑器选项。有效的方法是uri对字符串进行编码,然后进行替换:
decodeUriComponent(replace(uriComponent(body('bodyitem')?['bodykey']),'%0A','%3Cbr%3E'))
'%0A' is the '\n' uriencoded and '%3Cbr%3E' is '<br>' uriencoded.
先编码,然后执行替换,然后解码。希望这会有所帮助!
答案 2 :(得分:1)
从字面上看,在表达式中换行对我有用:
replace(triggerBody()?['Body'], '
', '<br/>')
答案 3 :(得分:0)
我有类似的问题。您必须从字面上使用“输入”。看起来像这样:
json(concat('{"items":',string(split(outputs('GetAttachmentContent'),'')),'}'))
希望有帮助。