使用相同的键组合两个对象

时间:2017-08-06 06:54:47

标签: json object merge jq

我有两个具有相同键的对象:

{"key": "first_name", "value": "Jane"}
{"key": "last_name", "value": "Doe"}

我想要

{"first_name": "Jane", "last_name": "Doe"}

我如何在jq中执行此操作?

2 个答案:

答案 0 :(得分:2)

jq 解决方案(使用 reduce 功能):

jq -s 'reduce .[] as $o ({}; .[$o.key]=$o.value)' yourfile

使用 from_entries 功能更简单:

jq -s 'from_entries' yourfile

输出(两种方法):

{
  "first_name": "Jane",
  "last_name": "Doe"
}
  • --slurp/-s - 选项,将整个输入流读入大型数组并仅运行一次过滤器

答案 1 :(得分:0)

下面应该适合你

jq 'map({(.key): .value}) | add' test.json

输出

{
  "first_name": "Jane",
  "last_name": "Doe"
}

PS:摘自https://github.com/stedolan/jq/issues/70