Quantcast
Channel: Active questions tagged jq - Stack Overflow
Viewing all articles
Browse latest Browse all 527

How to udpate a value in a nested and partly flattened object with jq?

$
0
0

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?


Viewing all articles
Browse latest Browse all 527

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>