我正在使用azure API管理服务记录api的请求和响应。
现在我需要从传入的JSON请求中删除多余的空间。我尝试了很多类似“查找并替换”和替换过滤器的操作,但无法实现。
eg: Incoming request
body.FullName ="XYZ ABC"
<set-body template="liquid">
{
"Id": "{{body.Id}}",
"FullName":"{{body.FullName]}}"
}
</set-body>
如上所示,在XYZ和ABC之间的FullName中,有三个空格。 我的要求是删除它们之间的多余空间,如下面的示例所示。
Final output would be :
{
"Id" : 12
"FullName" : "XYZ ABC"
}
答案 0 :(得分:1)
如果只想对某些属性执行此操作,请尝试:
<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,然后迭代遍历以递归固定每个属性值。