Я создаю приложение, которое принимает координаты пользователя, координаты в API погоды отправляются для тела запроса JSON, затем тело ответа JSON сопоставляется с несколькими POJO.
Проблема, с которой я столкнулся, заключается в том, чтобы выяснить, как это сделать с Джексоном, чтобы сопоставить каждую часть тела ответа. Я новичок в фреймворке, поэтому мне было бы полезно указать верное направление.
Пример тела ответа:
{
"location": {
"name": "Lake Tamarisk",
"region": "California",
"country": "United States of America",
"lat": 33.81,
"lon": -115.34,
"tz_id": "America/Los_Angeles",
"localtime_epoch": 1629239816,
"localtime": "2021-08-17 15:36"
},
"current": {
"last_updated_epoch": 1629239400,
"last_updated": "2021-08-17 15:30",
"temp_c": 36.4,
"temp_f": 97.5,
"is_day": 1,
"condition": {
"text": "Partly cloudy",
"icon": "//cdn.weatherapi.com/weather/64x64/day/116.png",
"code": 1003
},
"wind_mph": 12.1,
"wind_kph": 19.4,
"wind_degree": 176,
"wind_dir": "S",
"pressure_mb": 1006.0,
"pressure_in": 29.72,
"precip_mm": 0.0,
"precip_in": 0.0,
"humidity": 36,
"cloud": 6,
"feelslike_c": 39.3,
"feelslike_f": 102.7,
"vis_km": 10.0,
"vis_miles": 6.0,
"uv": 9.0,
"gust_mph": 13.9,
"gust_kph": 22.3
}
}
POJO Классы:
Location, Condition, Current
2 ответа
Пусть иерархия классов отображает структуру JSON. Классов должно быть не менее 4. Корневой класс содержит данные JSON и 3 упомянутых вами класса.
class Response {
Location location;
Current current;
}
class Current {
String lastUpdatedEpoch;
......
Condition condition;
}
class Condition {
String text;
.......
}
class Location {
String name;
......
}
И, наконец, используйте некоторую стратегию, например annotaion @JsonNaming , чтобы преобразовать случай верблюда в футляр змеи.
Создайте корневой класс с другими классами внутри как поля.
class Root {
List<Location> location;
List<Current> current;
}
class Current {
List<Condition> condition;
}
Ваш сопоставитель объектов сопоставит json с классом с именем Root
Похожие вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].