О проблеме имени свойства сериализации и десериализации jackson

Java

причина

Недавно в проекте, использующем строку json для javaBean, в процессе преобразования было обнаружено, что имена атрибутов отличаются при преобразовании json в JavaBean. Например, строка json:

{
    "code": "1",
    "message": "操作成功"
}

Бэкэнд javaBean:

@Data
public class Result implements Serializable {
    private String aaa;
    private String bbb;
}

Решение

Справочная зависимость jackson-annotations maven В нем есть @JsonProperty и @JsonAlias ​​для решения этой проблемы, но в чем разница между аннотациями здесь?

  1. @JsonPropertyЭта аннотация предоставляет имя, соответствующее свойству java в процессе сериализации и десериализации. Что это значит? Проще говоря, когда строка json преобразуется в javaBean или javaBean преобразуется в строку json, свойство будет сопоставлено с параметр @JsonProperty.value,Например:

    @Data
    public class Result implements Serializable {
      @JsonProperty("code")
      private String aaa;
      @JsonProperty("message")
      private String bbb;
    }
    

    Результат десериализации:

    {
        "code": "1",
        "message": "操作成功"
    }
    

    Нашли проблему, возвращаемый json не тот

    {
        "aaa"1",
        "bbb": "操作成功"
    }
    

    Если мы хотим добиться вышеуказанного результата, нам нужно использовать @JsonAlias.

  2. @JsonAliasЭта аннотация работает только во время десериализации. Она указывает больше имен, которые может принимать атрибут java. Что это значит? Проще говоря, это вступит в силу, когда строка json будет преобразована в javaBean, например:

    @Data
    public class Result implements Serializable {
      @JsonAlias("code")
      private String aaa;
      @JsonAlias("message")
      private String bbb;
    }
    

    Результат десериализации:

    {
        "aaa": "1",
        "bbb": "操作成功"
    }
    

    добились желаемого результата.

  3. Резюме: Выше перечислены проблемы, с которыми столкнулись в проекте на этот раз.Если есть какие-либо проблемы или вы хотите что-то добавить, пожалуйста, укажите это, спасибо.