4

我有以下类层次结构: 编辑

public abstract class A implements Content {
    private long id;
    ....
}

@JsonPropertyOrder({"id"})
public class B extends A{
    private String oderField;
...
}

public interface Content{
   //Some get methods
}

@JsonPropertyOrder({"c"})
public class DefaultContent{
   private Content c;
   private String anotherProperty;
}

通过序列化一个B对象,我在 JSON 中看到的第一个字段是oderField,我想更改它,并首先获得id

序列化

public class Serializer{
private Gson gson;
public Serializer(){
GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.setDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
        gson = gsonBuilder.create();
        gsonParser = new JsonParser();
}

public String serializeMessage(DefaultContent messageToSerialize) {
        return gson.toJson(messageToSerialize);
    }
}

我用过@JsonPropertyOrder,但似乎是对同一类中的属性进行排序,没有考虑到超类。有人有什么想法吗?

提前致谢

4

1 回答 1

5

问题来自注释的处理方式:子类中的注释将覆盖子类中的注释。没有办法混合它们;因此,您需要做的是复制子类中的设置。这很不幸,但这就是 Jackson 中注释处理的工作方式。

于 2013-08-05T23:36:18.183 回答