Класс ObjectMapper Flashcards

1
Q

Что такое ObjectMapper

A

ObjectMapper — это класс из библиотеки Jackson, используемый для сериализации объектов Java в JSON и десериализации JSON обратно в объекты Java.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Какие основные задачи решает ObjectMapper

A

ObjectMapper выполняет преобразование Java-объектов в JSON (сериализация) и преобразование JSON в Java-объекты (десериализация).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Как сериализовать объект в JSON с использованием ObjectMapper

A

Для сериализации объекта в JSON используется метод

writeValueAsString(): String json = objectMapper
.writeValueAsString(obj);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Как десериализовать JSON в объект с помощью ObjectMapper

A

Для десериализации JSON в объект Java используется метод

readValue(): MyClass obj = objectMapper
.readValue(json MyClass.class);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Какие форматы данных поддерживает ObjectMapper кроме JSON

A

ObjectMapper может поддерживать форматы YAML XML CSV и CBOR при наличии соответствующих модулей (например jackson-dataformat-yaml jackson-dataformat-xml).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Как настроить ObjectMapper для форматирования JSON с отступами

A

Чтобы включить форматирование с отступами нужно вызвать метод

enable(SerializationFeature
.INDENT_OUTPUT)
: objectMapper
.enable(SerializationFeature
.INDENT_OUTPUT);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Как обрабатывать неизвестные поля при десериализации с ObjectMapper

A

Чтобы игнорировать неизвестные поля используйте настройку:

objectMapper
.configure(DeserializationFeatur
.FAIL_ON_UNKNOWN_PROPERTIES false);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Как работать с аннотациями Jackson и ObjectMapper

A

Jackson поддерживает аннотации такие как
@JsonProperty
@JsonIgnore
@JsonInclude
и другие для управления сериализацией и десериализацией.
Эти аннотации можно применять к полям и методам объектов Java.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Как сериализовать/десериализовать список объектов с помощью ObjectMapper

A

Для сериализации/десериализации списков можно использовать TypeReference:

List list = objectMapper
.readValue(json new TypeReference>(){});

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Как добавить модуль в ObjectMapper

A

Для добавления модуля (например для поддержки Java 8 типов) используйте метод registerModule():

objectMapper
.registerModule(new JavaTimeModule());

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Как настроить обработку дат и времени в ObjectMapper

A

Для работы с Java 8 типами дат (например LocalDate) можно подключить модуль JavaTimeModule и настроить форматирование через аннотацию @JsonFormat или глобально через

objectMapper
.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS false);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Как сериализовать только непустые поля с ObjectMapper

A

Для сериализации только непустых полей используется настройка:

objectMapper
.setSerializationInclusion(JsonInclude
.Include.NON_NULL);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Как настроить обработку циклических зависимостей (bidirectional relationships) с помощью ObjectMapper

A

Для предотвращения ошибок при сериализации циклических зависимостей (например в отношениях @OneToMany и @ManyToOne) можно использовать аннотации @JsonManagedReference и @JsonBackReference либо подключить модуль JacksonAnnotationIntrospector для автоматической обработки.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Как настроить кастомный сериализатор для поля/класса с ObjectMapper

A

Для настройки кастомного сериализатора создайте класс реализующий интерфейс JsonSerializer и примените его через аннотацию @JsonSerialize(using = MyCustomSerializer.class) к нужному полю или классу.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Как сериализовать объекты в виде дерева JSON (JsonNode)

A

ObjectMapper может сериализовать объект в дерево JSON с помощью метода valueToTree() возвращая JsonNode: JsonNode node = objectMapper.valueToTree(obj);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Как десериализовать JSON-данные из файла с помощью ObjectMapper

A

Для десериализации JSON из файла используйте метод readValue() и передайте в него файл: MyClass obj = objectMapper.readValue(new File(\file.json) MyClass.class);

17
Q

Как настроить поддержку полиморфных типов с ObjectMapper

A

Для поддержки полиморфной сериализации/десериализации используйте аннотацию @JsonTypeInfo и её настройки для указания как должен быть включен тип объекта в JSON.

18
Q

Как сериализовать объект в строку с разметкой (например XML)

A

Для сериализации объекта в XML можно использовать XmlMapper расширение ObjectMapper из пакета jackson-dataformat-xml: XmlMapper xmlMapper = new XmlMapper(); String xml = xmlMapper.writeValueAsString(obj);

19
Q

Как сериализовать объекты с использованием внешней конфигурации

A

ObjectMapper можно настроить через внешние конфигурации или профили подгружая их перед использованием. Это позволяет менять поведение сериализации/десериализации без изменения кода.