【问题标题】:jq - assign to the key name the value from a variablejq - 将变量中的值分配给键名
【发布时间】:2020-10-05 13:49:21
【问题描述】:

我有一个JSON 对象 {"b":1,"c":2} 并希望将此对象放在具有名为xyz 的键的对象下。

但是,键名来自 shell 变量。所以换句话说,我首先需要获取键名,然后将{"b":1,"c":2}放在它下面,结果如下所示:

{
  "xyz": {
    "b": 1,
    "c": 2
  }
}

我想出了以下声明。它可以完成这项工作,但想知道是否有更有效的方法来消除临时的new 条目。

jq -n --arg a "xyz"  '{"b":1,"c":2} as $new | {$new} | with_entries(if .key == "new" then .key = $a else . end)'

【问题讨论】:

    标签: json jq


    【解决方案1】:

    你可以很简单地做到这一点

    jq -n --arg a "xyz" '{ ($a): { "b": 1 ,"c": 2 } }'
    

    或来自标准输入的内容

    echo '{ "b": 1 ,"c": 2 }' | jq -n --arg a "xyz" '{ ($a): inputs }'
    

    或者没有-n

    echo '{ "b": 1 ,"c": 2 }' | jq --arg a "xyz" '{ ($a): . }'
    

    或者键名和对象都可以配置

    jq -n --arg k "xyz" --argjson v '{ "b": 1 ,"c": 2 }' '{ ($k): $v }'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      • 2013-05-03
      相关资源
      最近更新 更多