使用jq折叠JSON对象

时间:2019-01-08 21:17:24

标签: arrays json jq flatten

我在完成这个难题的最后一步时遇到了麻烦。我想展平一个包含带有jq数组的JSON。当前进度:https://jqplay.org/s/fwjTN1CnFc

输入:

{
    "a": "1",
    "list": 
    [
        {
            "Key": "b",
            "Value": "2"
        },
        {
            "Key": "c",
            "Value": "3"
        },
        {
            "Key": "d",
            "Value": "4"
        }
    ]
}

预期输出:

{
  "a": "1",
  "b": "2",
  "c": "3",
  "d": "4"
}

这里是我当前进度的链接。 https://jqplay.org/s/fwjTN1CnFc

我当前正在使用此查询{a: .a}, (.list | map({(.Key): .Value}) | add)

以下是我目前无法正确显示的结果:

{
  "a": "1"
}
{
  "b": "2",
  "c": "3",
  "d": "4"
}

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:3)

碰巧的是,您的.list完全适合jq的from_entries,因此您可以简单地编写:

{a} + (.list|from_entries)

但是,您的方法很容易起作用:

{a} +  (.list | map({(.Key): .Value}) | add)