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

Имя поля в Java

Внешний API часто задаёт имена полей в snake_case, а в Java свойства пишут в camelCase. Без пометки ключ в JSON совпадает с именем поля или компонента, и чужой текст не разберётся.

Аннотацию @JsonProperty вешают на компонент record или на поле класса и указывают строку, которую нужно читать и писать вместо имени в коде:

import com.fasterxml.jackson.annotation.JsonProperty; public record RemoteProfile( @JsonProperty("full_name") String fullName, @JsonProperty("age_years") int ageYears ) {}

При записи в текст ключи будут "full_name" и "age_years", а в коде по-прежнему используют fullName и ageYears:

import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.ObjectMapper; public record RemoteProfile( @JsonProperty("full_name") String fullName, @JsonProperty("age_years") int ageYears ) {} public class Main { public static void main(String[] args) throws Exception { String raw = "{\"full_name\":\"Ann\",\"age_years\":30}"; ObjectMapper mapper = new ObjectMapper(); RemoteProfile profile = mapper.readValue(raw, RemoteProfile.class); System.out.println(profile.fullName()); System.out.println(mapper.writeValueAsString(profile)); } }

Разбор принимает ключи из аннотаций. Обратная запись снова отдаёт тот же формат, который ждёт сервер или файл конфигурации.

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

String raw = "{\"device_id\":\"s1\",\"temp_c\":21.5}";

Сделайте record SensorRow: компонент deviceId в JSON должен называться "device_id", readingC - "temp_c". Разберите эту строку и выведите оба поля.

Создайте SensorRow с идентификатором "s9" и температурой 18.0, запишите объект в текст и убедитесь, что в строке есть ключи "device_id" и "temp_c" без camelCase-имён компонентов.

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