【问题标题】:Combine two objects with the same keys组合两个具有相同键的对象
【发布时间】:2026-01-14 16:50:01
【问题描述】:

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

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

我想要

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

如何在jq 中执行此操作?

【问题讨论】:

标签: json object merge jq


【解决方案1】:

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 - 选项,将整个输入流读入一个大数组并只运行一次过滤器

【讨论】:

    【解决方案2】:

    下面应该适合你

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

    输出

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

    PS:答案取自https://github.com/stedolan/jq/issues/70

    【讨论】:

      最近更新 更多