让我们有一些json消息:
{
league: {
name: A,
score: 4528
team:{
name: NY
score: 356
}
}
team:{
name: CA
score: 455
}
}
实际上,消息更大,包含数百个字段,通常在不同的结构中具有相同的简单名称。
我们有很多客户,每个人都有他想看的田地。更重要的是,这些字段集可以在运行时更改。
在GSON ExclusionStrategy
中,如果我的JSON消息具有全局唯一名称,则效果很好。这里有一些关于SO的答案。
public boolean shouldSkipField(FieldAttributes f) {
return !f.getName().equals(requiredName);
}
如果我们想要明确联盟.score和team.score,它甚至可以使用。使用f.getDeclaringClass()
。 (也可以在SO上找到。)但是使用它我有一个容器类,而不是FieldAttributes f
等JSON层次结构对象,因此,我无法进一步获取容器的容器。
但如果我想要区分league.team.score
和root.team.score
,即使该方法也无法提供帮助。
我正在使用GSON处理JSON消息。但我很乐意在任何JAVA技术中看到解决方案