Запись в строку в Java
Запись в строку начинается с типа данных и
экземпляра в памяти. Объект ObjectMapper
по умолчанию собирает компактный JSON без лишних
пробелов и переносов строк.
Описание доставки удобно хранить как record
с идентификатором и весом посылки. Jackson
сериализует компоненты record в ключи JSON:
import com.fasterxml.jackson.databind.ObjectMapper;
public record Shipment(String id, double weightKg) {}
public class Main {
public static void main(String[] args) throws Exception {
Shipment parcel = new Shipment("A-17", 2.5);
ObjectMapper mapper = new ObjectMapper();
String text = mapper.writeValueAsString(parcel);
System.out.println(text);
}
}
В выводе имена компонентов становятся ключами JSON, числа и строки записываются в формате, принятом для JSON. Тот же вызов можно применить к списку внутри типа или к вложенному record - правила задаёт объявление полей.
Иногда строку нужно собрать с отступами для чтения
человеком. У ObjectMapper есть метод
writerWithDefaultPrettyPrinter: результат
разбивается на строки с вложенностью:
import com.fasterxml.jackson.databind.ObjectMapper;
public record Shipment(String id, double weightKg) {}
public class Main {
public static void main(String[] args) throws Exception {
Shipment parcel = new Shipment("B-02", 0.8);
ObjectMapper mapper = new ObjectMapper();
String pretty = mapper
.writerWithDefaultPrettyPrinter()
.writeValueAsString(parcel);
System.out.println(pretty);
}
}
Опишите record Ticket с компонентами
code типа String и price
типа int. Создайте билет с кодом
"K7" и ценой 1200, запишите его
в JSON-строку и выведите результат.
Для того же типа включите красивый вывод. Запишите
билет с кодом "M1" и ценой 500
и выведите многострочный текст.