使用 jq 将 JSON 转换为简单的 key=value 文件

Convert JSON to simple key=value file using jq

我有一个 JSON 文件,如下所示:

{
  "key1": "value1",
  "key2": "value2",
  ...
  "keyn": "valuen"
}

没有数组或嵌套对象,只有一个简单的键->值映射。我想使用 jq 将此文件转换为以下格式的纯文本配置文件:

KEY1=value1
KEY2=value2
...
KEYn=valuen

(键在结果文件中应大写)。我在网上搜索了各种可用的 jq 教程,希望那里会涵盖这样一个明显的(在我看来)示例(至少没有大写),但事实并非如此。我发现的所有教程都使用更复杂的示例,例如从 JSON 文件中提取特定值、处理数组或嵌套结构等。但是,没有简单的 JSON 到文本的转换。 man jq也没用,不太清楚。你能帮我得到我想要的结果吗?

注意:必须使用 jq,而不是任何其他工具来完成,因为它将在有权访问 jq 但没有其他工具处理 [=26] 的脚本中使用=] 保证存在于系统中。

您可以使用 to_entries 遍历对象中的条目,然后将每个条目格式化为字符串并使用 -r (--raw-output) 标志,如下所示:

$ cat example.json
{
  "key1": "value1",
  "key2": "value2",
  "keyn": "valuen"
}
$ jq -r 'to_entries[] | (.key | ascii_upcase) + "=" + .value' < example.json
KEY1=value1
KEY2=value2
KEYN=valuen