Как часть процессов выпуска, мне приходится сравнивать некоторые данные конфигурации JSON, используемые моим приложением. В качестве первой попытки я просто красиво напечатал JSON и разделил их (используя kdiff3 или просто diff).
Однако, поскольку эти данные выросли, kdiff3 смешивает разные части в выходе, делая дополнения похожими на гигантские модификации, нечетные удаления и т.д. Очень сложно понять, что другое. Я также пробовал использовать другие инструменты для сравнения (meld, kompare, diff, несколько других), но все они имеют одинаковую проблему.
Несмотря на все мои усилия, я не могу отформатировать JSON таким образом, чтобы инструменты diff могли понять.
Пример данных:
[
  {
    "name": "date",
    "type": "date",
    "nullable": true,
    "state": "enabled"
  },
  {
    "name": "owner",
    "type": "string",
    "nullable": false,
    "state": "enabled",
  }
  ...lots more...
]
Выше, вероятно, не вызовет проблемы (проблема возникает, когда начинаются сотни строк), но это суть того, что сравнивается.
Это просто образец; полные объекты - 4-5 атрибутов, а у некоторых атрибутов есть 4-5 атрибутов. Имена атрибутов довольно однородны, но их значения очень разнообразны.
В общем, кажется, что все инструменты diff путают закрытие "}" со следующими закрывающимися объектами "}". Кажется, я не могу нарушить эту привычку.
Я попытался добавить пробелы, изменить отступы и добавить некоторые строки "BEGIN" и "END" до и после соответствующих объектов, но инструмент все еще запутывается.