Список значений в Java
Массив в JSON записывают квадратными скобками и
элементами через запятую. Компонент типа
List в record автоматически превращается
в такой массив, если Jackson знает, как сериализовать
элемент списка.
Группа участников проекта - имя команды и список
логинов. Оба поля входят в один record:
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
public record ProjectTeam(String name, List<String> members) {}
public class Main {
public static void main(String[] args) throws Exception {
ProjectTeam team = new ProjectTeam(
"alpha",
List.of("kim", "lee", "pat")
);
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(team));
}
}
В строке появится ключ members со значением-массивом
строк. Пустой список сериализуется как [],
порядок элементов сохраняется.
Разбор из текста восстанавливает List с тем же
порядком. Достаточно передать JSON, где массив уже
задан литералом:
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
public record ProjectTeam(String name, List<String> members) {}
public class Main {
public static void main(String[] args) throws Exception {
String raw = "{\"name\":\"beta\",\"members\":[\"ada\",\"bob\"]}";
ObjectMapper mapper = new ObjectMapper();
ProjectTeam team = mapper.readValue(raw, ProjectTeam.class);
System.out.println(team.members().size());
System.out.println(team.members().getFirst());
}
}
Дана карточка рецепта:
var card = new RecipeCard("Soup", List.of("hot", "veg"));
Опишите record RecipeCard
с компонентом title и списком tags.
Запишите карточку в JSON и выведите строку.
Дана строка JSON:
String raw = "{\"title\":\"Pasta\",\"tags\":[\"italian\",\"fast\"]}";
Разберите эту строку
в RecipeCard и выведите второй тег
отдельной строкой.