42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
Created on Thu Apr 18 17:13:06 2024
|
|
|
|
@author: dh
|
|
"""
|
|
def merge_json(old_json, new_json):
|
|
if not isinstance(old_json, dict) or not isinstance(new_json, dict):
|
|
return old_json
|
|
|
|
for key, value in new_json.items():
|
|
if key not in old_json:
|
|
old_json[key] = value
|
|
elif isinstance(value, list):
|
|
if key not in old_json:
|
|
old_json[key] = []
|
|
if key == "timestamps":
|
|
for item in value:
|
|
if item not in old_json[key]:
|
|
old_json[key].append(item)
|
|
else:
|
|
old_json[key].extend(value)
|
|
elif isinstance(value, dict):
|
|
old_json[key] = merge_json(old_json.get(key, {}), value)
|
|
else:
|
|
old_json[key] = value
|
|
|
|
return old_json
|
|
|
|
# Beispielaufruf
|
|
old_json = {
|
|
"timestamps": ["s", "e", "r"],
|
|
"data": {"foo": [1, 2, 4], "bar": [3, 4, 6]}
|
|
}
|
|
|
|
new_json = {
|
|
"timestamps": ["r", "p"],
|
|
"data": {"foo": [4,5], "bar": [6,7]}
|
|
}
|
|
|
|
merged_json = merge_json(old_json, new_json)
|
|
print(merged_json) |