Сортировка данных в ответе JSON для сравнения

#groovy #soapui

Вопрос:

Я пытаюсь сравнить 2 полных ответа JSON — ожидаемых и фактических для статуса прохождения/отказа. Мой ожидаемый ответ на листе excel не соответствует последовательности, которую я получаю после выполнения запроса API в качестве фактического ответа, что приводит к сбою сравнения 1 на 1. Чтобы решить эту проблему, мне нужно отсортировать данные в Ожидаемом ответе, чтобы сопоставить их с фактическим форматом ответа перед сравнением. Ниже приведен ожидаемый и фактический ответ для справки. Кто-нибудь может помочь с этим?

Ожидаемый Ответ —

«Водители»: [ { «идентификатор contactid»: 501019, «LicenseNumber»: «», «LicenseState»: «Вирджиния», «DriverNumber»: 3, «DriverStatus»: «активный», «DriverTerminationDate»: нулевой, «DriverUsed»: ложные, «PolicyDateTimeDriverAdd»: «2016-07-26T11:45:05», «PolicyDateTimeMax»: «2016-07-26T21:34:10» }, { «идентификатор contactid»: 501018, «LicenseNumber»: «», «LicenseState»: «Вирджиния», «DriverNumber»: 2, «DriverStatus»: «активный», «DriverTerminationDate»: нулевой, «DriverUsed»: правда, «PolicyDateTimeDriverAdd»: «2016-07-26T11:45:05», «PolicyDateTimeMax»: «2016-07-26T21:34:10» }, { «идентификатор contactid»: 501017, «LicenseNumber»: «», «LicenseState»: «Вирджиния», «DriverNumber»: 1, «DriverStatus»: «активный», «DriverTerminationDate»: нулевой, «DriverUsed»: правда, «PolicyDateTimeDriverAdd»: «2016-07-26T11:45:05», «PolicyDateTimeMax»: «2016-07-26T21:34:10» } ]

Фактический Ответ —

«Водители»: [ { «идентификатор contactid»: 501017, «LicenseNumber»: «», «LicenseState»: «Вирджиния», «DriverNumber»: 1, «DriverStatus»: «активный», «DriverTerminationDate»: нулевой, «DriverUsed»: правда, «PolicyDateTimeDriverAdd»: «2016-07-26T11:45:05», «PolicyDateTimeMax»: «2016-07-26T21:34:10» }, { «идентификатор contactid»: 501018, «LicenseNumber»: «», «LicenseState»: «Вирджиния», «DriverNumber»: 2, «DriverStatus»: «активный», «DriverTerminationDate»: нулевой, «DriverUsed»: правда, «PolicyDateTimeDriverAdd»: «2016-07-26T11:45:05», «PolicyDateTimeMax»: «2016-07-26T21:34:10» }, { «идентификатор contactid»: 501019, «LicenseNumber»: «», «LicenseState»: «Вирджиния», «DriverNumber»: 3, «DriverStatus»: «активный», «DriverTerminationDate»: нулевой, «DriverUsed»: ложные, «PolicyDateTimeDriverAdd»: «2016-07-26T11:45:05», «PolicyDateTimeMax»: «2016-07-26T21:34:10» }, { «идентификатор contactid»: 501021, «LicenseNumber»: «», «LicenseState»: «Вирджиния», «DriverNumber»: 4, «DriverStatus»: «активный», «DriverTerminationDate»: null, с «DriverUsed»: ложные, «PolicyDateTimeDriverAdd»: «2016-07-26T11:45:05», «PolicyDateTimeMax»: «2016-07-26T21:34:10» } ]

Я выделил поле Номер драйвера в ожидаемом ответе, в котором я хотел бы отсортировать данные перед сравнением в порядке возрастания 1,2,3

Комментарии:

1. Что вы пробовали? Как далеко вы продвинулись? Какие ошибки вы увидели?

2. Ниже приведен код, который я использовал для сортировки данных в ожидаемом ответе по номеру драйвера 1,2,3 —

3. //Сортировка ожидаемого ответа по номеру драйвера 1,2,3 def expectedMap = [ : ]; expectedMap = convertJsontoMap(ожидаемый) log.info(Ожидаемая карта) def Ожидаемая карта = Ожидаемая карта.сортировка({it1, it2 -> it1.значение ><=> it1.значение}) log.info(«Ожидаемая карта» Ожидаемая карта) результат определения = Ожидаемая карта.findAll{it.ключ == «Драйверы[0]. Номер водителя»} log.info(результат)

4. Но вышеописанная СОРТИРОВКА не возвращает ответ по номеру драйвера 1,2,3