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

Отправка JSON в Java

Создание записи на API часто требует метода POST и тела в формате JSON. Текст тела получают из модели через writeValueAsString, а в запросе задают заголовок "Content-Type: application/json".

Учебный "/posts" на typicode принимает черновик с userId, title и body. Ответ можно разобрать в тип с полем id:

import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 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; public record NewPost(int userId, String title, String body) {} @JsonIgnoreProperties(ignoreUnknown = true) public record SavedPost(int id, String title) {} public class Main { public static void main(String[] args) throws Exception { ObjectMapper mapper = new ObjectMapper(); NewPost draft = new NewPost( 1, "Note", "Short text", ); String payload = mapper.writeValueAsString(draft); HttpClient client = HttpClient.newBuilder().build(); HttpRequest request = HttpRequest.newBuilder() .uri( URI.create( "https://jsonplaceholder.typicode.com/posts", ), ) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(payload)) .build(); HttpResponse<String> response = client.send( request, HttpResponse.BodyHandlers.ofString(), ); SavedPost saved = mapper.readValue( response.body(), SavedPost.class, ); System.out.println(saved.id()); System.out.println(saved.title()); } }

Сервис httpbin.org/post возвращает принятое тело внутри JSON-ответа. Массив чисел кодируют так же, как одиночный объект, и отправляют одной строкой:

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; public class Main { public static void main(String[] args) throws Exception { List<Integer> numbers = List.of(1, 2, 3, 4, 5); ObjectMapper mapper = new ObjectMapper(); String payload = mapper.writeValueAsString(numbers); HttpClient client = HttpClient.newBuilder().build(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://httpbin.org/post")) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(payload)) .build(); HttpResponse<String> response = client.send( request, HttpResponse.BodyHandlers.ofString(), ); System.out.println(response.body()); } }

Сформируйте JSON-массив чисел от 1 до 5, отправьте его POST на "https://httpbin.org/post" с типом "application/json". Выведите тело ответа целиком или фрагмент с принятыми данными.

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