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

Json 使用相同的关键点组合两个对象,json,object,merge,jq,Json,Object,Merge,Jq,我有两个具有相同关键点的对象: {"key": "first_name", "value": "Jane"} {"key": "last_name", "value": "Doe"} 我想要 {"first_name": "Jane", "last_name": "Doe"} 在jq中如何实现这一点?下面的内容应该适合您 jq 'map({(.key): .value}) | add' test.json 输出 { "first_name": "Jane", "last_name"

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

{"key": "first_name", "value": "Jane"}
{"key": "last_name", "value": "Doe"}
我想要

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

jq
中如何实现这一点?

下面的内容应该适合您

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

{
  "first_name": "Jane",
  "last_name": "Doe"
}
PS:答案取自jq解决方案(使用
reduce
函数):

或者更简单地使用以下功能:

jq -s 'reduce .[] as $o ({}; .[$o.key]=$o.value)' yourfile
jq -s 'from_entries' yourfile
输出(对于两种方法):


  • --slurp/-s
    -选项,将整个输入流读取到一个大数组中,然后只运行一次过滤器
{
  "first_name": "Jane",
  "last_name": "Doe"
}