причина
Недавно в проекте, использующем строку 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 для решения этой проблемы, но в чем разница между аннотациями здесь?
-
@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.
-
@JsonAliasЭта аннотация работает только во время десериализации. Она указывает больше имен, которые может принимать атрибут java. Что это значит? Проще говоря, это вступит в силу, когда строка json будет преобразована в javaBean, например:
@Data public class Result implements Serializable { @JsonAlias("code") private String aaa; @JsonAlias("message") private String bbb; }Результат десериализации:
{ "aaa": "1", "bbb": "操作成功" }добились желаемого результата.
-
Резюме: Выше перечислены проблемы, с которыми столкнулись в проекте на этот раз.Если есть какие-либо проблемы или вы хотите что-то добавить, пожалуйста, укажите это, спасибо.