java - @JsonPropertyOrder 和来自父类(super class)的字段

标签 java json jackson

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

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/

相关文章:

java - 在 Java 中针对 CA 验证 X.509 证书

json - 在 Swagger-UI 中覆盖动词级模型/模型架构

java - 无法读取 JSON : Unexpected end-of-input in field name

java - Java从服务器发送文件到客户端

java - 如何知道一个列表有一个特定的索引?

java - 如何解决 "cannot make a static reference to the non-static method"?

javascript - 搜索建议 html 输入

javascript - 在 jQuery 中使用 .get() 从 PHP 中获取 JSON 数据

java - Jackson 用 java 解析

android - Retrofit 或 Jackson ObjectMapper 将 "aId"属性映射到小写的 "aid"