将json文件转换为新的json

时间:2017-03-13 14:41:23

标签: json python-3.x jq

{
  "prodid_876006": [
    "028915"
  ],
  "prodid_980": [
    "192147",
    "1632589"
  ]
}

给出:

{    
"028915" : ["prodid_876006"],
"192147" : ["prodid_980"],
"1632589" : ["prodid_980"]
}

我怎么能得到以下输出? (这里的键是序列数组的每个元素,值是样本json的键):

UIComponent

3 个答案:

答案 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]
)