我有一个JSON字符串,如下所示。
JSON
{
"wf.example.input1": "/path/to/file1",
"wf.example.input3": [
"/path/to/file3",
"/path/to/file4"
]
}
我需要以下格式输出list
。
name:"wf.example.input1", value:"/path/to/file1"
name:"wf.example.input3", value:"/path/to/file3"
name:"wf.example.input3", value:"/path/to/file4"
我知道我可以使用jq 'keys'
获取所有密钥,并且还可以使用jq 'flatten'
获取所有值。但是这并没有列出我需要的所有映射。那么如何获得所需的输出列表映射?
答案 0 :(得分:3)
首先将其转换为条目,然后您可以为键和值构建输出。对于值数组,只需遍历数组中的所有值,否则返回值本身。
$ jq -r 'to_entries[] | "name:\(.key|tojson), value:\(.value|(arrays[]//.)|tojson)"' input.json
name:"wf.example.input1", value:"/path/to/file1"
name:"wf.example.input3", value:"/path/to/file3"
name:"wf.example.input3", value:"/path/to/file4"