{
"prodid_876006": [
"028915"
],
"prodid_980": [
"192147",
"1632589"
]
}
给出:
{
"028915" : ["prodid_876006"],
"192147" : ["prodid_980"],
"1632589" : ["prodid_980"]
}
我怎么能得到以下输出? (这里的键是序列数组的每个元素,值是样本json的键):
UIComponent
答案 0 :(得分:0)
以下解决方案在reduce
中使用reduce
,因此可能看起来有点棘手,因此可能有助于将“reduce”视为一种“do循环”,如缩进所示:
reduce to_entries[] as $kv ({};
reduce $kv.value.serials[] as $s (.;
. + {($s): (.[$s] + [$kv|.key]) } ) )
答案 1 :(得分:0)
以下是使用 to_entries , reduce 和添加
的解决方案 [ to_entries[]
| .key as $k
| reduce .value.serials[] as $v ({}; .[$v] += [$k])
] | add
答案 2 :(得分:0)
首先,一个更简洁的方法来获得问题的第一个结果是使用map_values
。您正在将对象图中的所有值更改为serials
值的内容。这可以简单地表达为:
map_values(.serials)
从那里开始,只需转动数据即可。
map_values(.serials) | reduce to_entries[] as $e ({};
.[$e.value[]] += [$e.key]
)