Найти разницу между JSON данными и обновить разницу - PullRequest
0 голосов
/ 29 апреля 2020

Я застрял на несколько часов, и мне нужна ваша помощь.

Требование следующее:

Имея два JSON объекта, один всегда равен source и имеет все данные нам нужны. Второй JSON объект не содержит всех данных из source

Требование:

Это источник JSON объекта.

{
  "lang": "en",
  "global": {
    "clear_search": "Clear Search",
    "filter": "Filter",
    "projects": {
        "sort_projects": "Sort projects by"
    },
  },
}

И это второй объект (ПРИМЕЧАНИЕ. Первый объект всегда содержит больше данных):

{
  "lang": "de",
  "global": {
    "clear_search": "Suche löschen",
    "filter": "Filter",
  },
}

Мне нужно:

  • Найти разницу между source и объектом 2
  • Обновите разницу, с source до объекта 2
  • Если свойство source является объектом, l oop через него, что означает, что если он вложенный, мне нужно через него l oop (рекурсия).
  • Если ключи одинаковые, но значения не совпадают, сохраните ключи, но используйте значение объекта 2.

    Результат:

{
  "lang": "de",
  "global": {
    "clear_search": "Suche löschen",
    "filter": "Filter",
    "projects": {
        "sort_projects": "Sort projects by"
    },
  },
}

Спасибо за проверку, прошу не публиковать код с именами переменных, например x или _.

1 Ответ

0 голосов
/ 29 апреля 2020

Вы можете представить json в виде дерева. Каждый узел в дереве будет представлять ключ json. Параллельное значение dfs от root для обоих деревьев поможет вам отметить ключи, общие для обоих деревьев. Немаркированные ключи будут иметь значение.

Вы можете расширить этот обход dfs, чтобы дополнительно заполнить секунду json недостающими ключами.

...