小编caw*_*wot的帖子

jq - 有条件地将一个值设置为另一个值

我需要使用 jq 将 json 文档中的字段值设置为三个值之一,具体取决于哪个值存在。理论上,这看起来像:set X to (if A exists, else if B exists, else if C exists, else "")

我的 json 文档示例如下所示:

{
  "name": "0230",
  "publish_date": "2007-08-18",
  "abc_severity": "",
  "def_severity": "medium",
  "ghi_severity": "negligible"
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个字段Severity并将其值设置为非abc_severity空或空的值。如果它为 null 或空,我想将其设置为def_severity,如果它为 null 或空,我想将其设置为ghi_severity。如果所有三个都为 null 或为空,则可以使用空值创建""。所以这种情况下的输出将是:

{
  "name": "0230",
  "publish_date": "2007-08-18",
  "abc_severity": "",
  "def_severity": "medium",
  "ghi_severity": "negligible",
  "Severity": "medium"
}
Run Code Online (Sandbox Code Playgroud)

以下是我似乎能够得到的最接近的:

'. | if .abc_severity? then .Severity=.abc_severity else if .def_severity? then .Severity=.def_severity …

json jq

5
推荐指数
1
解决办法
5959
查看次数

标签 统计

jq ×1

json ×1