【问题标题】:Convert a simple JSON object to a properties file将简单的 JSON 对象转换为属性文件
【发布时间】:2017-02-21 00:22:05
【问题描述】:

我有一个简单的 JSON 对象,想将其转换为 bash 中的属性文件。

输入:

{
    "foo": "bar",
    "abc": "def ghi"
}

预期输出:

foo="bar"
abc="def ghi"

【问题讨论】:

    标签: bash sh jq


    【解决方案1】:

    您可以为此使用to_entries

    jq -r 'to_entries[]|"\(.key)=\"\(.value)\""' input.json
    

    顺便说一句,在 Java 属性文件中你不需要引用值:

    jq -r 'to_entries[]|"\(.key)=\(.value)"' input.json
    

    【讨论】:

    • 使用@sh 而不是自己引用值;这对于确保正确引用 {"key": "\"value\""} 之类的内容是必要的。 ('... | "\(.key)=\(.value | @sh)"')。
    • @chepner OP想写一个属性文件,这让我想到了Java。这些文件遵循与 shell 不同的语法规则。实际上,双引号根本没有必要。好吧,操作人员似乎期待他们。
    • 如果双引号确实是不必要的,我会把它们排除在外。如果 value 本身包含引号,则结果将不正确。
    • 我不是 Java 专家,可能他们只是多余的。我可以添加它作为替代。
    • 不幸的是,它不适用于嵌套结构(例如在 Spring Boot application.yml
    【解决方案2】:

    实际上,`to_entries' 和 `@sh' 过滤器的使用仅适用于 simple JSON 对象(如问题中所述...)。在我的情况下(嵌套 json)似乎我会使用 npm 的包“json-to-properties”

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 2020-02-02
      • 2017-10-25
      • 1970-01-01
      • 2014-03-19
      • 2018-10-14
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      相关资源
      最近更新 更多