JQ:显示单元素数组的contents/value

JQ: Show the contents/value of a single-element array

我的 JSON 文件:

{
    "MetricAlarms": [
        {
            "EvaluationPeriods": 2,
            "AlarmActions": [
                "this is causing me trouble"
            ],
            "Threshold": 0.0,
            "Dimensions": [
                {
                    "Name": "DBInstanceIdentifier",
                    "Value": "db-master02"
                }
            ],
            "MetricName": "ReplicaLag"
        }
    ]
}

我当前用于压平 JSON 文件的命令(jq 1.3,现在无法升级):

cat $JSON_FILE |
   jq -r '.MetricAlarms[] |
          { MetricName,
            Threshold,
            EvaluationPeriods,
            AlarmActions
          } +
          ( .Dimensions[] | { DimName: .Name, DimValue: .Value } )
   '

产生:

{
  "DimName": "DBInstanceIdentifier",
  "DimValue": "db-master02",
  "AlarmActions": [
    "this is causing me trouble"
  ],
  "EvaluationPeriods": 2,
  "Threshold": 0,
  "MetricName": "ReplicaLag"
}

我真正想要的是:

{
  "DimName": "DBInstanceIdentifier",
  "DimValue": "db-master02",
  "AlarmActions": "this is causing me trouble",
  "EvaluationPeriods": 2,
  "Threshold": 0,
  "MetricName": "ReplicaLag"
}

我想在没有数组的情况下显示 "AlarmActions" 的值。

这似乎是一个简单的问题,但我却找不到答案。我曾尝试以类似于我对待 "Dimensions" 的方式对待 "AlarmActions"。我已经尝试了我能想到的 []、[0]、句点、管道和函数调用的所有变体,但都无济于事。我错过了什么?

使用:

cat $JSON_FILE |
jq -r '.MetricAlarms[] |
      { MetricName,
        Threshold,
        EvaluationPeriods,
        "AlarmActions" : .AlarmActions[0]
      } +
      ( .Dimensions[] | { DimName: .Name, DimValue: .Value } )
'

即不要对 AlarmActions 元素使用快捷语法。