如何动态设置内部对象中的某些字段,只有它们才能被序列化?

时间:2016-08-04 16:24:22

标签: java json serialization gson

让我们有一些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.scoreroot.team.score,即使该方法也无法提供帮助。

我正在使用GSON处理JSON消息。但我很乐意在任何JAVA技术中看到解决方案

0 个答案:

没有答案