Как удалить последнюю запятую в каждом цикле в Wiremock

Мне нужно написать заглушку для запроса, который будет выглядеть примерно так:

[
    { "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() в приложении Python, которому необходимо читать ответы из этой заглушки WireMock.

Есть мысли, как избавиться от последней запятой? Я подумал, может быть, у запятой есть условие eq и проверяю, совпадает ли текущая переменная todo с {{jsonPath request.body '$.[-1]'}}, но записываю это так:

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

тоже не сработало.

Мы будем очень благодарны за любые предложения о том, как избавиться от последней запятой. Спасибо :)


person Vilius Gudžiūnas    schedule 06.08.2020    source источник


Ответы (1)


Получил ответ на этот вопрос в группах Google.

Можно использовать @last в каждом цикле, чтобы определять, когда вы находитесь на последнем элементе, например:

{{#each (jsonPath request.body '$.things') as |thing|}}
  {{#if @last}}
    { "thing": {{{thing}}} }
  {{else}}
    { "thing": {{{thing}}} },
  {{/if}}
{{/each}}
person Vilius Gudžiūnas    schedule 08.08.2020