azure 在逻辑应用程序中转义和删除字符(动态内容)

piah890a  于 2023-06-24  发布在  其他
关注(0)|答案(2)|浏览(116)

我一直在尝试从REST API获取数据,然后使用Logic应用程序将其添加到Azure的日志分析中。我的问题是,似乎我需要转义Log Analytics请求正文中的一些字符,因为我得到了一个400错误消息:
{“Error”:“InvalidDataFormat”,“Message”:空
我已经检查过了,JSON主体无效。
我的JSON请求体看起来像这样:

{
"assetid": "TBD Assetid",
"vulnid": "@{items('For_each')?['id']}",
"key": "@{items('For_each_3')?['key']}",
"proof": "@{items('For_each_3')?['proof']}",
"since": "@{items('For_each_3')?['since']}",
"status": "@{items('For_each_3')?['status']}
}

实际的请求如下所示:

{
"assetid": "TBD",
"vulnid": "adobe-flash-apsb15-11-cve-2015-3096",
"key": "C:\WINDOWS\system32\Macromed\Flash\",
"proof": "<p><p>Vulnerable OS: Microsoft Windows Server 2012 R2 Datacenter Edition<p></p></p><p>Vulnerable software installed: Adobe Flash 17.0.0.188 (C:\WINDOWS\system32\Macromed\Flash\)</p></p>",
"since": "2021-05-10T11:41:03.483Z",
"status": "vulnerable-version"
}

问题似乎是反斜杠和段落元素。
我想转义“key”和“proof”中的反斜杠,并删除段落元素。我试图寻找一个解决方案,但大多数例子都是静态字符串和替换函数。
有什么想法吗

vaj7vani

vaj7vani1#

您可以使用replace函数删除key参数的转义字符和段落元素
对于关键参数:

replace(variables('string2'),'\',''

你也可以使用replace作为proof参数,下面是表达式。
对于验证参数:

replace(replace(replace(variables('string1'),'<p>',''),'</p>',''),'\',''))

下面是使用replace函数的示例输出以供参考

基于上述要求,我们理解每次添加到proof参数的html标签可能会有所不同,如果是这种情况,“replace function()”不会帮助您。
要删除这些html字符,您可以采用以下2种方法中的任何一种:
1.使用Html to text content version连接器
1.如本文所述使用Azure functions

s5a0g9ez

s5a0g9ez2#

另一种可接受的答案是Compose操作,它允许您从多个输入中构造一个 * 有效的 * JSON有效负载。这包括转义无效的JSON输入。

相关问题