我有一个 json 文件,其中包含null
s 作为某些键的值,我想将其替换为某些特定值。
鉴于此输入:
{
"id": null,
"rows": [
{
"panels": [
{
"title": "Panel1",
"datasource": null
},
{
"title": "Panel2",
"datasource": null
}
]
}
]
}
我想拥有
{
"id": null,
"rows": [
{
"panels": [
{
"title": "Panel1",
"datasource": "mydb"
},
{
"title": "Panel2",
"datasource": "mydb"
}
]
}
]
}
我目前使用的是
sed 's/"datasource": null/"datasource": "mydb"/'
这会产生我需要的输出,但我一直认为使用它是一种耻辱sed
对于这项工作,当有像这样的工具时jq
可以更好地处理 JSON。
首先,您需要确定要更新的对象。由于您想将面板的空数据源设置为"mydb"
,你可以这样做:
$ jq '.rows[].panels[].datasource //= "mydb"' input.json
如果您想更新任何datasource
任何级别的对象的属性,您可以使用..
递归地搜索它们。
$ jq '(.. | select(objects | has("datasource"))).datasource //= "mydb"' input.json
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)