使用Azure API管理服务,从JSON请求中删除多余的空间

时间:2018-12-13 07:22:41

标签: azure-api-management

我正在使用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"
}

1 个答案:

答案 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,然后迭代遍历以递归固定每个属性值。