从附加了随机字符串的JSON获取键值映射

时间:2017-07-11 06:57:03

标签: json jq

我有一个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'获取所有值。但是这并没有列出我需要的所有映射。那么如何获得所需的输出列表映射?

1 个答案:

答案 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"