用无重复的JQ扁平化JSON结构 [英] Flatten JSON structure with jq without duplicates
本文介绍了用无重复的JQ扁平化JSON结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我从这个结构开始:
[{
"experiment": "ex1",
"models": [{
"name": "model1",
"reference": 0.1,
"code": [{
"name": "foo",
"version": "a",
"value": 0.2
},{
"name": "foo",
"version": "b",
"value": 0.2
},{
"name": "bar",
"version": "a",
"value": 0.15
}]
},{
"name": "model2",
"reference": 0.12,
"code": [{
"name": "foo",
"version": "a",
"value": 0.09
},{
"name": "baz",
"version": "a",
"value": 0.15
}]
}]
}]
我希望结果是:
{
"model": "model1",
"code": "foo",
"version": "a"
}
{
"model": "model1",
"code": "foo",
"version": "b"
}
{
"model": "model1",
"code": "bar",
"version": "a"
}
{
"model": "model2",
"code": "foo",
"version": "a"
}
{
"model": "model2",
"code": "baz",
"version": "a"
}
所以我编写了以下查询。
.[] | { "model": .name, "code": .code[].name, "version": .code[].version }
问题是,在输出结构中每次使用.code[]
时,结果都会相乘,导致许多重复项。我如何才能避免这种情况,并且只获得所需的结果?
before[1][2][3][4]....向推荐答案
提出了许多类似的问题如下所示,您需要避免多次扩展同一数组,以防止组合爆炸。
.[].models[] | {model: .name} + (.code[] | {name, version})
这篇关于用无重复的JQ扁平化JSON结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文