Список записей API в Java
Коллекция на сервере часто приходит как JSON-массив
в корне ответа. В Java для него указывают
List с элементом-моделью и передают тип
.
Адрес "/users" без суффикса возвращает все
десять учебных пользователей. После чтения тела
удобно узнать длину списка и первое имя:
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.List;
@JsonIgnoreProperties(ignoreUnknown = true)
public record ApiUser(int id, String name) {}
public class Main {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
HttpClient client = HttpClient.newBuilder().build();
HttpRequest request = HttpRequest.newBuilder()
.uri(
URI.create(
"https://jsonplaceholder.typicode.com/users",
),
)
.GET()
.build();
HttpResponse<String> response = client.send(
request,
HttpResponse.BodyHandlers.ofString(),
);
List<ApiUser> users = mapper.readValue(
response.body(),
new TypeReference<List<ApiUser>>() {},
);
System.out.println(users.size());
System.out.println(users.getFirst().name());
}
}
Локальный массив строк разбирают тем же способом, без сетевого обмена:
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
public class Main {
public static void main(String[] args) throws Exception {
String raw = "[\"x\",\"y\",\"z\"]";
ObjectMapper mapper = new ObjectMapper();
List<String> tags = mapper.readValue(
raw,
new TypeReference<List<String>>() {},
);
System.out.println(tags.size());
}
}
Дана строка JSON:
String raw = "[\"x\",\"y\",\"z\"]";
Разберите её в список строк и выведите его размер.