【问题标题】:Get key value mapping from a JSON with random string appended to them从附加了随机字符串的 JSON 中获取键值映射
【发布时间】:2017-07-11 06:57:02
【问题描述】:

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

【问题讨论】:

  • 嗨,您不想先尝试编写一些代码吗...尝试使用 map 函数对列表转换也有好处...然后可以在您卡住时提供帮助,但是从您的代码中...实际上是好样的

标签: json jq


【解决方案1】:

首先将其转换为条目,然后您可以为键和值建立输出。对于值数组,只需遍历数组中的所有值,否则就是值本身。

$ 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"

【讨论】:

  • p.s.,arrays[] // . 部分实际上与:if type == "array" then .[] else . end
猜你喜欢
  • 2020-07-15
  • 2022-11-26
  • 2022-01-20
  • 2018-11-28
  • 2011-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多