Как сериализовать / десериализовать реализацию Map с переменными поля [duplicate]

Если вы используете MySQL Workbench (в настоящее время версия 6.3), вы можете сделать это с помощью:

  1. Щелкните правой кнопкой мыши «Таблицы»;
  2. Выберите Мастер импорта данных таблицы;
  3. Выбирайте файл csv и следуйте инструкциям (JSON также может быть использован); Хорошо, что вы можете создать новую таблицу на основе файла csv, который хотите импортировать или загрузить данные в существующую таблицу

2
задан Wil Selwood 9 July 2015 в 14:49
поделиться

3 ответа

Обычно считается, что плохая практика расширяет HashMap. Вместо этого вы должны создать класс с картой и дополнительным полем.

Это решит вашу проблему, но также будет иметь дополнительные преимущества:

  • вы будете (например, предотвращение добавления некоторых ключей / значений и т. д.)
  • вы сможете изменить реализацию карты, если это необходимо (LinkedHashMap, синхронизированная карта, параллельная карта)
2
ответ дан JB Nizet 20 August 2018 в 16:33
поделиться

Вместо @JsonUnwrapped вы можете использовать @JsonAnyGetter и @JsonAnySetter следующим образом:

public class Foo {

   private OffsetDateTime lastModifiedTime;
   private HashMap<String, String> additionalProperties = new HashMap<String, String>();

   public Foo() {
      super();
      lastModifiedTime = OffsetDateTime.now();
   }

   public void setLastModifiedTime(OffsetDateTime newTime) {
      this.lastModifiedTime = newTime;
   }

   public OffsetDateTime getLastModifiedTime() {
      return this.lastModifiedTime;
   }

   @JsonAnyGetter
   public Map<String, String> any() {
      return this.additionalProperties;
   }

   @JsonAnySetter
   public void set(String name, String value) {
      this.additionalProperties.put(name, value);
   }
}
0
ответ дан manuc66 20 August 2018 в 16:33
поделиться

По умолчанию ваша карта попадет в MapSerializer . Вы можете зарегистрировать модификатор сериализатора, чтобы добавить настраиваемое свойство, но вам лучше было бы вложить карту в качестве свойства Foo и разворачивать ее:

@JsonUnwrapped
private HashMap<String, String> fooMap;
2
ответ дан Sam Berry 20 August 2018 в 16:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: