我使用azure API管理服务来记录API的请求和响应。
现在我需要从传入的JSON请求中移除额外的空间。我尝试了很多东西,比如"查找并更换"和更换过滤器,但都没能实现
eg: Incoming request
body.FullName ="XYZ ABC"
<set-body template="liquid">
{
"Id": "{{body.Id}}",
"FullName":"{{body.FullName]}}"
}
</set-body>
正如您在上面的FullName中看到的那样,XYZ和ABC之间有三个空格。我的要求是删除它们之间的额外空间,正如您在下面的例子中看到的那样。
Final output would be :
{
"Id" : 12
"FullName" : "XYZ ABC"
}
如果只想对某些属性执行此操作,请尝试:
<set-body template="liquid">
{
"Id": "{{body.Id}}",
"FullName":"{{body.FullName | split: " " | join: " "}}"
}
</set-body>
在液体中似乎没有更好的方法了。
如果你想在不分析其结构的情况下对整个身体进行分析,那么:
<set-body>@(Regex.Replace(context.Request.Body.As<string>(), @"s+", " "))</set-body>
或者,您可以将整个主体解析为JObject并进行迭代,即递归地修复每个属性值。