我有以下类层次结构: 编辑
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
,但它似乎对同一个类中的属性进行排序,没有考虑父类(super class)。有人知道吗?
提前致谢
最佳答案
问题来自注解的处理方式:子类中的注解将覆盖子类中的注解。没有办法混合它们;所以你需要做的是在子类中复制设置。这很不幸,但这就是 Jackson 中注释处理的工作方式。
关于java - @JsonPropertyOrder 和来自父类(super class)的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17995623/