I need to override the property version
with the value of image
. The problem is, that the json document can have several forms, whereby parts of the nesting can be flattened:
Example Document 1
{"modulesContent": {"$edgeAgent": {"properties.desired.modules.event-bridge-redis": {"settings": {"image": "redis:6.2.7","createOptions": "" },"type": "docker","status": "running","restartPolicy": "always","version": "1.0" },"properties.desired.modules.event-bridge-metrics": {"settings": {"image": "mcr.microsoft.com/azureiotedge-metrics-collector:1.19","createOptions": "" },"type": "docker","version": "1.0","status": "running","restartPolicy": "always" } },"$edgeHub": { } }}
Example document 2
{"modulesContent": {"$edgeAgent": {"properties.desired.modules": {"event-bridge-redis": {"settings": {"image": "redis:6.2.7","createOptions": "" },"type": "docker","status": "running","restartPolicy": "always","version": "1.0" },"event-bridge-metrics": {"settings": {"image": "mcr.microsoft.com/azureiotedge-metrics-collector:1.19","createOptions": "" },"type": "docker","version": "1.0","status": "running","restartPolicy": "always" } } },"$edgeHub": { } }}
Expected output of Example Document 1
{"modulesContent": {"$edgeAgent": {"properties.desired.modules.event-bridge-redis": {"settings": {"image": "redis:6.2.7","createOptions": "" },"type": "docker","status": "running","restartPolicy": "always","version": "redis:6.2.7" },"properties.desired.modules.event-bridge-metrics": {"settings": {"image": "mcr.microsoft.com/azureiotedge-metrics-collector:1.19","createOptions": "" },"type": "docker","version": "mcr.microsoft.com/azureiotedge-metrics-collector:1.19","status": "running","restartPolicy": "always" } },"$edgeHub": { } }}
Expected output of Example document 2
{"modulesContent": {"$edgeAgent": {"properties.desired.modules": {"event-bridge-redis": {"settings": {"image": "redis:6.2.7","createOptions": "" },"type": "docker","status": "running","restartPolicy": "always","version": "redis:6.2.7" },"event-bridge-metrics": {"settings": {"image": "mcr.microsoft.com/azureiotedge-metrics-collector:1.19","createOptions": "" },"type": "docker","version": "mcr.microsoft.com/azureiotedge-metrics-collector:1.19","status": "running","restartPolicy": "always" } } },"$edgeHub": { } }}
Is it possible to define a single jq query, which can handle several forms of nesting (from a flat form to a nested form) and so, that the form of the input is also preserved in the output?