在JSON返回中包含类(静态)变量

时间:2018-10-10 05:38:50

标签: json spring-boot static

当响应从spring-boot返回一个对象时,JSON包含所有对象属性,但是类变量不可用。我如何也可以在return json中返回静态属性?

示例类:

public class classA{
    private static int var;
    private string name;
    private string address;
}

JSON返回为:

{ name : "", address : ""}

我要求返回的是:

{var : "", name : "", address : ""}

2 个答案:

答案 0 :(得分:0)

静态变量未序列化,因此在反序列化期间,将从类中加载静态变量值。(将加载当前值。)

引用:are-static-variables-serialized-in-serialization-process?

答案 1 :(得分:0)

最近,我尝试了另一种方法来完成此操作,并成功了。如果有人需要,我会在这里发布。解决方案是为该类创建自定义序列化器。

@JsonSerialize(using = CustomSerializer.class)
public class classA{
    public static int var;
    private string name;
    private string address;
}

public class CustomSerializer extends StdSerializer {

    @Override
    public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        jsonGenerator.writeStartObject();
        jsonGenerator.writeStringField("name",((A)o).getName());
        jsonGenerator.writeStringField("address",((A)o).getAddress());
        jsonGenerator.writeNumberField("var",A.var);
        jsonGenerator.writeEndObject();
    }
}