【发布时间】:2018-01-27 06:10:26
【问题描述】:
我最终想要的结构是:
{
"catalog": [
{
"name": "X",
"catalog": [
{ "name": "Y", "uniqueId": "Z" },
{ "name": "Q", "uniqueId": "B" }
]
}
]
}
这就是现有结构的样子,只是每个级别都有 许多 其他属性 (https://gist.github.com/ajcrites/e0e0ca4ca3a08ff2dc401ec872e6094c)。我只是想过滤掉那些并得到一个看起来特别像这样的 JSON 格式。
我开始使用:jq '.catalog',但这仅返回数组。我仍然想要那里的catalog 属性名称。我可以用jq '{catalog: .catalog[]} 做到这一点,但这会单独打印出每个目录对象,这会使整个输出无效的 JSON。我仍然希望属性在数组中。有没有办法使用 jq 过滤数组中的特定属性键值?
【问题讨论】:
-
显示当前输入所需的输出。此外,输入不是有效的 json:它不能在数组中包含
"name": "Y"这样的符号 -
@RomanPerekhrest 是所需的输出。输入是一样的,只是有更多的属性。我在问题中包含了一个示例
-
我有一个提供预期输出的解决方案。但我可以称其为“黑客”,而不是通用方法。这就是我没有发布它的原因