Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpJsRd 140 of 322 menu
◀ ▶

Чтение из строки в Java

Текст JSON хранит только данные, без методов класса. Метод readValue у ObjectMapper принимает строку и класс Java, проверяет ключи и типы значений, затем создаёт экземпляр через конструктор или фабрику record.

Пусть в памяти уже есть готовая строка с описанием склада. Её можно разобрать без предварительной записи того же объекта:

import com.fasterxml.jackson.databind.ObjectMapper; public record StorageUnit(String code, int capacity) {} public class Main { public static void main(String[] args) throws Exception { String raw = "{\"code\":\"W-3\",\"capacity\":40}"; ObjectMapper mapper = new ObjectMapper(); StorageUnit unit = mapper.readValue(raw, StorageUnit.class); System.out.println(unit.code()); System.out.println(unit.capacity()); } }

После разбора компоненты доступны как у обычного экземпляра: code и capacity совпадают с тем, что было в JSON. Второй аргумент StorageUnit.class указывает целевой тип.

Круг «запись - чтение» часто проверяют на одном объекте: сначала получают строку, затем восстанавливают значение и сравнивают поля:

import com.fasterxml.jackson.databind.ObjectMapper; public record StorageUnit(String code, int capacity) {} public class Main { public static void main(String[] args) throws Exception { StorageUnit original = new StorageUnit("W-9", 12); ObjectMapper mapper = new ObjectMapper(); String raw = mapper.writeValueAsString(original); StorageUnit restored = mapper.readValue(raw, StorageUnit.class); System.out.println(original.equals(restored)); } }

Для корректного JSON вывод будет true: восстановленный StorageUnit совпадает с исходным по правилам record. Если в тексте лишний ключ или неверный тип числа, разбор завершится исключением Jackson.

Дана строка JSON:

String raw = "{\"label\":\"pro\",\"level\":2}";

Объявите record Badge с компонентами label и level. Из этой строки получите объект и выведите оба поля на отдельных строках.

Создайте Badge с меткой "trial" и уровнем 0, запишите его в текст, затем разберите текст обратно. Выведите true, если исходный и восстановленный объект равны.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить