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

标签 json config jq ini

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

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

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

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

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

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

最佳答案

您可以使用 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

关于json - 使用 jq 将 JSON 转换为简单的 key=value 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66564551/

相关文章:

php - 创建 "two way"配置文件

javascript - 修改一个清理JSON对象的javascript函数

macos - 如何配置 kdiff3 而不是 emerge 作为 git mergetool?

windows - git-svn 在 Windows 上忽略 subversion 配置文件 (auto-props)

bash - 使用 jq 和 bash 为数组中的每个对象运行命令

带有 JObject 元素的 C# JsonResult 返回空数组

javascript - 未在无序列表中显示 json 解析的数据

wcf - 如何在 WCF 客户端的配置文件中使用 configSource 的多个位置

json - jq 不能是 tsv 格式,只有数组错误

json - 根据 jq 中的多个值选择条目