Azure api management 使用Azure API管理服务,从JSON请求中删除额外空间

Azure api management 使用Azure API管理服务,从JSON请求中删除额外空间,azure-api-management,Azure Api Management,我正在使用azure API管理服务记录API的请求和响应 现在我需要从传入的JSON请求中删除额外的空间。我尝试了很多方法,比如“查找并替换”和“替换过滤器”,但都没能实现 eg: Incoming request body.FullName ="XYZ ABC" <set-body template="liquid"> { "Id": "{{body.Id}}", "FullName":"{{body.FullName]}}" } &l

我正在使用azure API管理服务记录API的请求和响应

现在我需要从传入的JSON请求中删除额外的空间。我尝试了很多方法,比如“查找并替换”和“替换过滤器”,但都没能实现

eg: Incoming request
body.FullName ="XYZ   ABC"

<set-body template="liquid">
 {    
   "Id": "{{body.Id}}",
   "FullName":"{{body.FullName]}}"       
 }
</set-body>

如果只想对某些属性执行此操作,请尝试:

<set-body template="liquid">
 {    
   "Id": "{{body.Id}}",
   "FullName":"{{body.FullName | split: " " | join: " "}}"       
 }
</set-body>

{    
“Id”:“{body.Id}”,
“全名”:“{body.FullName | split:”“join:”“}”
}
在液体中似乎没有更好的方法

如果你想在不分析身体结构的情况下对整个身体进行分析,那么:

<set-body>@(Regex.Replace(context.Request.Body.As<string>(), @"\s+", " "))</set-body>
@(Regex.Replace(context.Request.Body.As(),@“\s+”,“”)

或者,您可以将整个正文解析为JObject,然后迭代以递归方式修复每个属性值。

当有2个以上的空格时,它将不起作用,例如:“FullName”:“XYZ ABC”//根据您的答案,3个空格的输出将是:2个空格合并为1个空格,加上剩余的1个空格将不会被更改。总计将是2个空格,例如:“全名”:“XYZ ABC”//2个空格。更新了一个补丁。
<set-body>@(Regex.Replace(context.Request.Body.As<string>(), @"\s+", " "))</set-body>