【问题标题】:jq - Create JSON object map from environment variablesjq - 从环境变量创建 JSON 对象映射
【发布时间】:2020-01-30 12:10:57
【问题描述】:

我正在使用 jq 1.5 并尝试通过 jq 传递两个环境变量来创建一个 json 对象:

export REGIONS="region1,region2"
export KMS_KEYS="key1,key2"

test.json

{
    "builders": [
    {
      "name": "aws"
    }
  ]
}

使用以下命令:

jq --arg regions $REGIONS --arg kmskeys $KMS_KEYS '.builders[].region_kms_key_ids={$regions}' test.json

目前的结果:

{
  "builders": [
    {
      "name": "aws",
      "region_kms_key_ids": {
        "regions": "region1,region2"
      }
    }
  ]
}

期望的结果:

{
    "builders": [
    {
      "name": "aws",
      "region_kms_key_ids": {
        "region1": "key1",
        "region2": "key2"
      }
    }
  ]
}

我被困在如何使用我的 REGIONS 变量内容作为键和 KMS_KEYS 变量作为值。任何建议将不胜感激

【问题讨论】:

    标签: json object key command-line-interface jq


    【解决方案1】:

    用逗号将$regions$kmskeys 拆分为两个单独的数组,将它们转置以将每个区域与相应的kms 键配对并从中生成对象,然后将它们加在一起形成单个对象。例如:

    .builders[].region_kms_key_ids = (
        [ $regions/",", $kmskeys/"," ] | transpose | map({(.[0]):.[1]}) | add
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-21
      • 1970-01-01
      • 2021-02-12
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多