将简单的JSON对象转换为属性文件
问题描述:
我有一个简单的JSON对象,并想将其转换为bash中的属性文件。将简单的JSON对象转换为属性文件
输入:
{
"foo": "bar",
"abc": "def ghi"
}
预期输出:
foo="bar"
abc="def ghi"
答
您可以使用to_entries
为:
jq -r 'to_entries[]|"\(.key)=\"\(.value)\""' input.json
顺便说一下,在Java属性文件,你不需要引用值:
jq -r 'to_entries[]|"\(.key)=\(.value)"' input.json
答
实际上`to_entries'和`@sh'过滤器的使用只适用于简单的 JSON对象(正如问题所述)。在我的情况(嵌套json)似乎我会使用npm的包“json-to-properties”
使用'@ sh'而不是自己引用值;这对于确保'{“键”:“\”value \“”}'正确引用“是必要的。 (''... |“\(.key)= \(。value | @sh)”'')。 – chepner
请解释“@sh”实际上是什么...... – bentzy
@chepner OP想写一个属性文件,这让我想到Java。这些文件遵循与shell不同的语法规则。其实双引号根本就没有必要。那么,该运作似乎期待他们。 – hek2mgl