如何使用 jq 将 json 文档中的空值替换为特定值?

2024-01-19

我有一个 json 文件,其中包含nulls 作为某些键的值,我想将其替换为某些特定值。

鉴于此输入:

{
  "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(使用前将#替换为@)

如何使用 jq 将 json 文档中的空值替换为特定值? 的相关文章

随机推荐