I want to conditionally update an element value based on the value of another element within the same array.
For example, I want to find name=="weather" and change checked from "true" to "false"
[
{
"originalSourceId": null,
"sourceConnection": {
"id": null,
"version": null,
"properties": [
{
"id": null,
"version": null
}
],
"name": "POSTGRESQL",
"businessName": null
},
"checked": true,
"newlyAdded": false,
"discoveredEntities": [
{
"name": "weather",
"checked": true,
"checkedBeforeEdit": false,
"storeFieldsAsStrings": false
},
{
"name": "weather_2",
"checked": true,
"checkedBeforeEdit": false,
"storeFieldsAsStrings": false
}
],
"defaultLevel": "MANAGED"
}
]
the checked element will update to "false" for the same object with name = "weather"
[
{
"originalSourceId": null,
"sourceConnection": {
"id": null,
"version": null,
"properties": [
{
"id": null,
"version": null
}
],
"name": "POSTGRESQL",
"businessName": null
},
"checked": true,
"newlyAdded": false,
"discoveredEntities": [
{
"name": "weather",
"checked": false,
"checkedBeforeEdit": false,
"storeFieldsAsStrings": false
},
{
"name": "weather_2",
"checked": true,
"checkedBeforeEdit": false,
"storeFieldsAsStrings": false
}
],
"defaultLevel": "MANAGED"
}
]
Figured it out.
jq '[.[].discoveredEntities[] |= if (.name=="weather") then (.checked = "false") else . end]'\
./test.json