【发布时间】:2016-03-17 16:53:50
【问题描述】:
我在使用 jq 组合多个对象时遇到问题。在这种情况下,MY_OBJECTS 是一个 json 对象流,每个对象都有一个键。我将它们组合成一个数组,如下所示:
$ echo ${MY_OBJECTS} | jq -s '.'
[
{
"Name1": [
{
"Item1": "Val1",
"Item2": "Val2"
}
]
},
{
"Name1": [
{
"Item1": "Val3",
"Item2": "Val4"
}
]
},
{
"Name2": [
{
"Item1": "Val5",
"Item2": "Val6"
}
]
},
{
"Name2": [
{
"Item1": "Val7",
"Item2": "Val8"
}
]
}
]
我想将这些组合成一个对象,以便将一个名称下的所有 Item 对象组合成一个数组。本质上,我想产生以下输出:
$ echo ${MY_OBJECTS} | jq -s <SOME_COMMAND>
{
"Name1": [
{
"Item1": "Val1",
"Item2": "Val2"
},
{
"Item1": "Val3",
"Item2": "Val4"
}
],
"Name2": [
{
"Item1": "Val5",
"Item2": "Val6"
},
{
"Item1": "Val7",
"Item2": "Val8"
}
]
}
我曾期望echo ${MY_OBJECT} | jq -s add 这样做,但是这会用以下对象覆盖每个对象,而不是添加数组,以便它们都在一个数组中(就像添加对象而不是数组一样)。换句话说,这些条目看起来像这样:
"Name1": [
{
"Item1": "Val3",
"Item2": "Val4"
}
]
虽然我希望它们看起来像这样:
"Name1": [
{
"Item1": "Val1",
"Item2": "Val2"
},
{
"Item1": "Val3",
"Item2": "Val4"
}
]
任何建议将不胜感激!
【问题讨论】: