Как найти различия между двумя JSON-файлами. значение и вывести значение: что изменилось и на что

Рейтинг: 0Ответов: 1Опубликовано: 25.01.2023
import json
from typing import List, Dict

with open('json_new.json', 'r') as new_file:
    new_data = json.load(new_file)

with open('json_old.json', 'r') as old_file:
    old_data = json.load(old_file)


def dict_lookup(dict_1: Dict, dict_2: Dict, diff: List) -> Dict:
    """Функция, перебирающая ключи в двух JSON-файлах на предмет не соответствия значений"""
    for key, val in dict_1.items():
        if isinstance(dict_1[key], dict):
            dict_lookup(dict_1[key], dict_2[key], diff)
        elif dict_1[key] != dict_2[key] and key in diff:
            dict_of_values[key] = dict_1[key]
    return dict_of_values


dict_of_values: Dict = {}
diff_list: List[str] = ["services", "staff", "datetime"]
result: Dict = dict_lookup(new_data, old_data, diff_list)
print(result)

with open('result.json', 'w') as final:
    json.dump(result, final, indent=4, ensure_ascii=False)

введите сюда описание изображения

есть 2 типа файлов 1 - json_new.json 2 - json_old.json

Ответы

▲ 0

в цикле функции values не используется, а значит достаточно for key in dict_1.keys()

там-же в цикле после проверки isinstance функция возвращает значение вникуда соответственно dict_of_values.update(func)

Ну и dict_of_values лучше задать внутри функции, дабы он обнулялся при каждом запуске.