【问题标题】:How to remove the last comma in an each loop in Wiremock如何删除Wiremock中每个循环中的最后一个逗号
【发布时间】:2020-08-06 09:34:09
【问题描述】:

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

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

请求中待办事项的数量可以变化。

我的回复目前是这样的:

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

请注意,我将正文隔开以使其更具可读性,在实际存根中,它都在一行上。

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

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

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

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

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

也没有用。

任何关于如何摆脱最后一个逗号的建议将不胜感激。谢谢:)

【问题讨论】:

    标签: json handlebars.js wiremock wiremock-standalone


    【解决方案1】:

    在 Google 网上论坛上找到了答案。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-24
      • 1970-01-01
      • 2013-11-24
      • 2017-09-29
      • 1970-01-01
      • 1970-01-01
      • 2015-08-05
      相关资源
      最近更新 更多