Ахой! Иногда я просто использую рекурсию. Вот упрощённый пример для духа:
Программный код:
def merge_dicts(dict1, dict2):
for key in dict2:
if key in dict1 and isinstance(dict1[key], dict):
merge_dicts(dict1[key], dict2[key])
else:
dict1[key] = dict2[key]
return dict1
json1 = '{"key1": "value1", "key2": "value2"}'
json2 = '{"key2": {"subkey": "new_value2"}, "key3": "value3"}'
dict1 = json.loads(json1)
dict2 = json.loads(json2)
result_dict = merge_dicts(dict1, dict2)
result_json = json.dumps(result_dict)
print(result_json)
Костыльный, но рабочий вариант.