如何使用jq添加动态生成的数组?

时间:2019-08-28 11:57:14

标签: json jq

我在Windows 7上使用jq 1.6,并想将动态生成的数组添加到json文件。 该数组在该文件中尚不存在。

我有以下JSON结构(为清楚起见而简化):

{
  "policies": {
    "SearchBar": "separate",
    "SearchEngines": {
      "PreventInstalls": false
    }
  }
}

我想基于动态值生成一个数组,最后创建以下输出:

{
  "policies": {
    "SearchBar": "separate",
    "SearchEngines": {
      "PreventInstalls": false,
      "Remove": [
        "Twitter",
        "Wikipedia (en)"
      ]
    }
  }
}

Remove数组的内容存储在(cmd)%variable%中。 我发现那条线

jq -n --arg items "%variable%" "{ Remove: $items | split(\",\") }"

产生我想要的数组:

{
  "Remove": [
    "Twitter",
    "Wikipedia (en)"
  ]
}

将此数组插入原始文件的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

鉴于字符串输入字符串Twitter,Wikipedia (en),您可以使用jq更新JSON数据:

<file jq --arg i 'Twitter,Wikipedia (en)' '.policies.SearchEngines += ({ Remove: $i | split(",") })'
{
  "policies": {
    "SearchBar": "separate",
    "SearchEngines": {
      "PreventInstalls": false,
      "Remove": [
        "Twitter",
        "Wikipedia (en)"
      ]
    }
  }
}