Java - GSON 嵌套序列化

问题描述 投票:0回答:1

我遇到并希望解决以下“问题”:

假设您有以下两个对象 A、B,如下所示:

public class A {
    public Double att1;
    public Double att2;
    
    @Override
    public String toString() {
        GsonBuilder builder = new GsonBuilder();
        builder.serializeSpecialFloatingPointValues();
        builder.serializeNulls();
        
        Gson gson = builder.create();
        
        return gson.toJson(this);
    }
}

public class B {
    
    public A var1;
    public Double var2;
    
    @Override
    public String toString() {
        GsonBuilder builder = new GsonBuilder();
        builder.serializeSpecialFloatingPointValues();
        builder.serializeNulls();
        
        Gson gson = builder.create();
        
        return gson.toJson(this);
    }
}

B
序列化为 JSON 效果很好,但输出将如下所示:

{"var1":{"att1":{"value":30.0}, "att2":{"value":50.0}...}

有没有办法摆脱额外的嵌套级别,即嵌套对象

A
中的值直接分配给属性,即
{"var1":{"att1":30.0, "att2":50.0}...}

java json serialization gson
1个回答
1
投票

是的,您可以通过使用 Gson 自定义序列化过程来实现所需的 JSON 输出。您可以为 A 类实现一个自定义序列化器来控制它在 B 类中的序列化方式,而不是仅仅依赖 Gson 的默认行为。

以下是如何修改代码以实现所需的 JSON 输出:

© www.soinside.com 2019 - 2024. All rights reserved.