Должен ли класс, который сериализуется с GSON JSON, реализовать Serializable Interface - PullRequest
1 голос
/ 17 января 2020

У меня есть этот POJO, который сериализуется в JSON с использованием нового Gson (). До Json (сущность). Должен ли я реализовать Serializable Interface на этом POJO?

@Data
public class BankcodeJSONEntity {

    @NotNull
    @Size(min = 8, max = 8)
    private String bankcode;
    @NotNull
    @Size(min = 11, max = 11)
    private String bic;
    @NotNull
    private String ticket;

    @Basic
    @Temporal(TemporalType.DATE)
    @NotNull
    private Date date;
    @NotNull
    private String category;
    @NotNull
    private String name;

}

1 Ответ

2 голосов
/ 17 января 2020

Нет, это не обязательно. Gson использует отражение, чтобы произвести желаемое json. Вы должны реализовать Serializable, когда:

  1. сохранить на диске
  2. отправить его через сокет как объект

Например, если у вас есть веб-приложение, развернутое в HA на двух или более узлах в кластере (затем они обмениваются сеансами друг с другом), и вы используете область сеанса для сохранения аутентификации пользователя, компонент, содержащий эту информацию, должен быть сериализуемым.

Если вы решили использовать Serializable добавить serialVersionUID. Это долго используется JVM для уникальной идентификации самого объекта.

Когда вы не разделяете его, компилятор добавляет сгенерированный (который поэтому зависит от компилятора), и эта идентичность изменяется, когда Вы меняете свой объект, например, добавляя поле; это означает, что после минимального изменения не следует десериализовать объекты, сериализованные до изменения.

...