Я пытаюсь сопоставить этот JSON
{
"coord": {
"lon": 26.94,
"lat": 43.27
},
"weather": [
{
"id": 802,
"main": "Clouds",
"description": "scattered clouds",
"icon": "03d"
}
],
"base": "model",
"main": {
"temp": 19.3,
"pressure": 1012,
"humidity": 66,
"temp_min": 19.3,
"temp_max": 19.3,
"sea_level": 1012,
"grnd_level": 971
},
"wind": {
"speed": 6.91,
"deg": 182
},
"clouds": {
"all": 38
},
"dt": 1573204594,
"sys": {
"country": "BG",
"sunrise": 1573188939,
"sunset": 1573224978
},
"timezone": 7200,
"id": 727233,
"name": "Shumen",
"cod": 200
}
Моему собственному созданному объекту Java
package com.kosev.willitrain.model;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Map;
public class Weather {
@JsonProperty("name")
private String cityName;
private String type; // for weather type eg: Cloudy, Sunny, Raining etc...
private float temp;
private float tempMin;
private float tempMax;
private float windSpeed;
private String icon;
private float lon;
private float lat;
public Weather(){}
@JsonProperty("main")
private void unpackMain(Map<String,String> main) {
temp = Float.parseFloat(main.get("temp"));
tempMin = Float.parseFloat(main.get("temp_min"));
tempMax = Float.parseFloat(main.get("temp_max"));
}
@JsonProperty("coord")
private void unpackCoord(Map<String,String> coord) {
lon = Float.parseFloat(coord.get("lon"));
lat = Float.parseFloat(coord.get("lat"));
}
@JsonProperty("weather")
private void unpackWeather(Map<String,String> weather) {
type = weather.get("main");
icon = weather.get("icon");
}
}
Я получаю следующую ошибку:
com.fasterxml.jackson.databind.exc.MismatchedInputException: Невозможно десериализовать экземпляр java.util.LinkedHashMap<java.lang.Object,java.lang.Object>
из токена START_ARRAY в [Source: (PushbackInputStream);строка: 1, столбец: 46] (через цепочку ссылок: com.kosev.willitrain.model.Weather ["weather"])