Groovy сравнить два JSON с неизвестными именами и значениями узлов

У меня есть API для отдыха, и я должен сравнить два ответа JSON. Ниже вы можете найти структуру файла. Оба сравниваемых файла должны содержать одинаковые элементы, но порядок может быть разным. К сожалению, имена, тип (простой, массив) и количество ключей (root, nodeXYZ) также не известны.

{"root": [{
   "node1": "value1",
   "node2": "value1",
   "node3":    [
            {
         "node,311": "value311",
         "node312": "value312"
      },
            {
         "node321": "value321",
         "node322": "value322"
      }
   ],
   "node4":    [
            {
         "node411": "value411",
         "node412": "value413",
         "node413": [         {
            "node4131": "value4131",
            "node4132": "value4131"
         }],
         "node414": []
      }
      {
         "node421": "value421",
         "node422": "value422",
         "node423": [         {
            "node4231": "value4231",
            "node4232": "value4231"
         }],
         "node424": []
      }]
   "node5":    [
      {"node51": "value51"},
      {"node52": "value52"},
   ]
}]}

Я нашел некоторую полезную информацию вGroovy - сравнивает два объекта JSON (с одинаковой структурой) и возвращает ArrayList, содержащий различия Получение узла от Json Response Groovy: как найти json по значению ключа и найти его потомков в groovy но я не мог совместить это с решением. Я думал, что решение может выглядеть так:

take root
get root children names
check if child has children and get their names
do it to the lowest leve child

Сравнение всех имен должно быть простым (я думаю). К сожалению, мне не удалось получить ключи под root

Ответы на вопрос(2)

Ваш ответ на вопрос