如何删除Wiremock中每个循环中的最后一个逗号



我需要为一个看起来像这样的请求编写一个存根:

[
{ "todo_id": 1 },
{ "todo_id": 2 }
]

请求中todo对象的数量可能会有所不同。

我目前的回复如下:

"response": {
"status": 200,
"body": "[ {{#each (jsonPath request.body '$') as |todo|}}
{ "todo_id": {{todo.todo_id}} },
{{/each}}
]"
}

请注意,我把正文隔开是为了让它更可读,在实际的存根中,它都在一行上。

所以我的问题是,如果请求中传递了多个对象,我需要在todo对象后面加逗号。然而,这也给最后一个对象留下了一个逗号,所以如果发送了上面的请求,这将是响应:

[
{ "todo_id": 1 },
{ "todo_id": 2 },
]

最后一个逗号使.json()方法在Python应用程序中失败,该应用程序需要从该WireMock存根读取响应。

有没有想过如何去掉最后一个逗号?我想可能在逗号周围有一个eq条件,并检查当前的todo变量是否与{{jsonPath request.body '$.[-1]'}}相同,但这样写:

{{#eq todo {{jsonPath request.body '$.[-1]'}} }}

也不起作用。

任何关于如何去掉最后一个逗号的建议都将不胜感激。谢谢:(

在谷歌群组上得到了答案。

可以在每个循环中使用@last来检测您何时在最后一个项目上,例如:

{{#each (jsonPath request.body '$.things') as |thing|}}
{{#if @last}}
{ "thing": {{{thing}}} }
{{else}}
{ "thing": {{{thing}}} },
{{/if}}
{{/each}}

最新更新