【问题标题】:Include class(static) variables in to JSON return在 JSON 返回中包含类(静态)变量
【发布时间】:2018-10-10 05:38:50
【问题描述】:

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

示例类:

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

JSON 返回为:

{ name : "", address : ""}

我要求,返回是:

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

【问题讨论】:

  • 我也很想知道,如何在不初始化对象的情况下返回具有所有静态属性的静态类。

标签: json spring-boot static


【解决方案1】:

静态变量没有被序列化,所以在反序列化过程中,静态变量的值会从类中加载。(当前值会被加载。)

参考:are-static-variables-serialized-in-serialization-process?

【讨论】:

  • 他们没有办法在运行时将静态变量映射到普通变量吗?
  • 没有。静态变量不能序列化。
【解决方案2】:

最近我尝试了一种不同的方法来做到这一点并成功了。如果有人需要,我会在这里发布。解决方案是为 Class 创建自定义序列化程序。

@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();
    }
}

【讨论】:

    猜你喜欢
    • 2015-06-26
    • 2011-02-13
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多