我遇到并希望解决以下“问题”:
假设您有以下两个对象 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}...}
?
是的,您可以通过使用 Gson 自定义序列化过程来实现所需的 JSON 输出。您可以为 A 类实现一个自定义序列化器来控制它在 B 类中的序列化方式,而不是仅仅依赖 Gson 的默认行为。
以下是如何修改代码以实现所需的 JSON 输出: