【发布时间】:2018-09-04 16:55:33
【问题描述】:
我想根据同一个数组中另一个元素的值有条件地更新一个元素值。
比如我想找到name=="weather",把checked从“true”改成“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"
}
]
对于 name = "weather" 的同一对象,选中的元素将更新为 "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": false,
"checkedBeforeEdit": false,
"storeFieldsAsStrings": false
},
{
"name": "weather_2",
"checked": true,
"checkedBeforeEdit": false,
"storeFieldsAsStrings": false
}
],
"defaultLevel": "MANAGED"
}
]
【问题讨论】:
-
我试过 jq 。 | jq '[.[].discoveredEntities[] | if (.name=="weather") then (.checked = "false") else 。结束]' ./test.json。但它只是返回它的一部分,更新后的 check = false 天气。 [ {“名称”:“天气”,“检查”:“假”,“checkedBeforeEdit”:假,“storeFieldsAsStrings”:假},{“名称”:“天气_2”,“检查”:真, "checkedBeforeEdit": false, "storeFieldsAsStrings": false } ]
标签: json if-statement edit jq