我正在尝试映射此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:无法从START_ARRAY令牌中反序列化
java.util.LinkedHashMap<java.lang.Object,java.lang.Object>
的实例 在[来源:(PushbackInputStream);行:1,列:46](通过参考链:com.kosev.willitrain.model.Weather [“ weather”])