将简单的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 
+0

使用'@ sh'而不是自己引用值;这对于确保'{“键”:“\”value \“”}'正确引用“是必要的。 (''... |“\(.key)= \(。value | @sh)”'')。 – chepner

+0

请解释“@sh”实际上是什么...... – bentzy

+0

@chepner OP想写一个属性文件,这让我想到Java。这些文件遵循与shell不同的语法规则。其实双引号根本就没有必要。那么,该运作似乎期待他们。 – hek2mgl

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