Я использую утверждение JSON, чтобы утверждать, существует ли путь JSON. Предположим, у меня есть JSON-ответ массива «комнат», который «содержит» массив шкафов, как в следующем примере
"rooms":
[
{
"cabinets":
[
{
"id":"HFXXXX",
"locationid":null,
"name":"HFXXXX",
"type":"Hosp"
},
{
"id":"HFYYYY",
"locationid":null,
"name":"HFYYYY",
"type":"Hosp"
},
{
"id":"HFZZZZ",
"locationid":null,
"name":"HFZZZZ",
"type":"Hosp"
}
],
"hasMap":false,
"id":"2",
"map":
{
"h":null,
"w":null,
"x":null,
"y":null
},
"name":"Fantastic Room#3"
}
],
[
{ "cabinets":
[
{
"id":"HFBBBB",
"locationid":null,
"name":"HFBBBB",
"type":"Hosp"
}
],
"hasMap":false,
"id":"3",
"map":
{
"h":null,
"w":null,
"x":null,
"y":null
},
"name":"BallRoom #4"
}
]
Я хочу убедиться, что 'id' всех шкафов верны, поэтому я определяю путь JSON как rooms[*].cabinets[*].id
и ожидаю, что значение будет ["HFXXXX","HFYYYY","HFZZZZ","HFBBBB"]
Это работает отлично, за исключением того, что иногда значения возвращаются в другом порядке ["HFBBBB", "HFXXX","HFYYYY","HFZZZZ"]
вместо ["HFXXXX","HFYYYY","HFZZZZ","HFBBBB"]
, следовательно, утверждение не будет выполнено. Проблема заключается в порядке возвращаемого массива, а не в самих значениях.
Есть ли способ отсортировать порядок ответа перед подтверждением и продолжать использовать утверждение JSON? или единственный способ сделать это - извлечь значение, против которого я хочу заявить, и использовать его в утверждении JSR223 (groovy или javascript)?
если это так, можете ли вы показать мне пример того, как я мог бы сделать это в плагине JSR223.