使用jq,如何从文件(input_02.json)中获取json对象,并将其附加到output.json,同时保留output.json中已有的所有内容(例如,源自文件input_01.json的对象)。
在两种情况下要附加的对象实际上是文件的全部内容,文件的“id”字段作为对象的键。
我正在获取大量输入文件(所有语法都相同),并且基本上将它们组合在一起。
我用来创建要追加的对象的命令如下:
jq '{(.id):(.)} ' input_01.json
给了我:
{
"input1_id": {
}
}
input_1.json:
{
"id": "input1_id",
"val: "testVal1
}
input2.json:
{
"id": "input2_id",
"val: "testVal2
}
期望的输出:
{
"input1_id": {
"id": "input1_id",
"val: "testVal1
},
"input2_id": {
"id": "input2_id",
"val: "testVal2
}
}
答案 0 :(得分:0)
你可以在https://pypi.python.org/pypi/jf
中使用“jf”$ pip install jf
$ jf 'chain(), {y["id"]: y for y in x}' input1.json input2.json
{
"input2_id": {
"id": "input2_id",
"val": "testVal2"
},
"input1_id": {
"id": "input1_id",
"val": "testVal1"
}
}
答案 1 :(得分:0)
您与{(.id):(.)}
走在正确的轨道上。以下内容应处理您提到的案例,并可能会就类似案例提供一些想法:
program.jq :map({(.id):(.)}) | add
调用:
jq -s -f program.jq input_01.json input_02.json