在JQ中删除嵌套对象中的字段

5

我有一个JSON行文件,其中包含summary字段和其他字段。 我想使用JQ删除所有摘要字段。 这是我的输入:

{"object1": {"summary":"Some summary I want removing", "keepMe":"please"}}
{"object2": {"summary":"Delete me too!", "keepMe":"pretty please"}}

这是期望的输出结果:

{"object1": {"keepMe":"please"}}
{"object2": {"keepMe":"pretty please"}}

1
@Inian - 对我来说,它看起来是有效的JSON Lines格式,更重要的是,对于jq也是如此。 - peak
1
@Inian - 是的,但那不重要。jq是面向流的,因此可以处理JSON Lines。 - peak
1
@Inian - 你可能会喜欢看一下我的“面向流的jq入门指南”(https://github.com/pkoppstein/jq/wiki/A-Stream-oriented-Introduction-to-jq)。欢迎留言评论。 - peak
@peak:已经看起来很好了!你一定要将它链接到标签Wiki。就我个人而言,在我刚开始使用jq时,我发现原始文档很难跟上。这应该非常有用。 - Inian
1个回答

9

Q有几种可能的解释。

解决最简单的解释的简单方法是使用:

map_values(del(.summary))

如果您想要消除每个出现的“summary”字段,无论有多深嵌套,则可以使用walk/1函数,例如:
walk(if type == "object" then del(.summary) else . end)

我的摘要字段总是比实际需要的多一级,所以map_values是我之前尝试中缺失的关键部分!非常感谢。 - Iain Duncan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接