Код Middle API-автотесты обновлено

Разница двух JSON-ответов

Условие

Напишите json_diff(a, b, ignore): список путей, где ответы различаются, отсортированный по алфавиту. ignore это список имён ключей, которые не сравниваются ни на каком уровне.

  • путь корня $, ключ $.a.b, элемент $.items[1];
  • словари: ключ есть только в одном, это различие по пути ключа; общие ключи сравнивать рекурсивно;
  • списки разной длины: различие по пути самого списка; одинаковой длины: поэлементно;
  • разные типы или разные примитивы: различие по текущему пути.

Примеры

json_diff({"id":1,"name":"A"}, {"id":2,"name":"A"}, ["id"]) // []
json_diff({"id":1,"name":"A"}, {"id":2,"name":"B"}, []) // ["$.id", "$.name"]
json_diff({"items":[1,2]}, {"items":[1,3]}, []) // ["$.items[1]"]

Решите в тренажёре

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

Термины по теме