的JSON轉換成Java對象正確類型的參考我有以下JSON輸出我從API獲得,什麼是用於使用傑克遜
{"HYR":"[{\"LastUpdatedBy\":\"Bug 101510: VMukkanagoudar\",\"IATACountryCode\":\"US\",\"MetroCodeBool\":false,\"AirportName\":\"Sawyer County\",\"Latitude\":46,\"CityName\":\"Hayward\",\"MajorAirportBool\":false,\"Longitude\":-91,\"StatusCode\":\"A\",\"DisplayNameLocal\":\"Hayward, WI (HYR-Sawyer County)\",\"DisplayNameInternational\":\"Hayward, WI, United States (HYR-Sawyer County)\",\"UpdateDate\":\"2009-03-06 20:44:00.0\",\"AirportCode\":\"HYR\",\"AirportID\":5396808,\"RegionName\":\"Wisconsin\",\"IdenticalMetroCodeBool\":false,\"ExternalName\":\"HYR\",\"CountryCode\":\"USA\"}]",
"VAA":"[{\"LastUpdatedBy\":\"fmoneo\",\"IATACountryCode\":\"FI\",\"MetroCodeBool\":false,\"AirportName\":\" \",\"Latitude\":63,\"CityName\":\"Vaasa\",\"MajorAirportBool\":true,\"Longitude\":22,\"StatusCode\":\"A\",\"DisplayNameLocal\":\"Vaasa (VAA)\",\"DisplayNameInternational\":\"Vaasa, Finland (VAA)\",\"UpdateDate\":\"2008-08-12 17:26:00.0\",\"AirportCode\":\"VAA\",\"AirportID\":4276566,\"RegionName\":\" \",\"IdenticalMetroCodeBool\":false,\"ExternalName\":\"VAA\",\"CountryCode\":\"FIN\"}]"
....(and so on)}
JAVA對象是如下
@JsonIgnoreProperties(ignoreUnknown = true)
public class Config {
@JsonProperty("AirportCode")
String airportCode;
@JsonProperty("AirportID")
Integer airportId;
@JsonProperty("MetroCodeBool")
Boolean metroCodeBool;
@JsonProperty("MajorAirportBool")
Boolean majorAirportBool;
@JsonProperty("IdenticalMetroCodeBool")
Boolean identicalMetroCodeBool;
@JsonProperty("StatusCode")
Character statusCode;
//Getters and setters
}
轉換的代碼是
String jsonStr = apiCall();
if(jsonStr != null)
{
ObjectMapper mapper = new ObjectMapper();
TypeReference<HashMap<String, ArrayList<Config>>> typeRef = new TypeReference<HashMap<String, ArrayList<Config>>>() {};
HashMap<String, ArrayList<AirConfig>> configMap = mapper.readValue(jsonStr, typeRef);
}
但是,我得到的錯誤是
com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token
at [Source: [email protected]; line: 1, column: 2] (through reference chain: java.util.HashMap["HYR"])
我相信我創建的TypeReference不正確。我應該如何改變它的任何解決方案。
爲 「HYR」 你的JSON值是一個字符串,而不是一個數組(我認爲這是一些壞的JSON) – 2016-12-01 06:21:12
_「轉換代碼大約是這個」_ - 對不起,這是不可接受的。沒有人會看看不能反映你實際使用的代碼。這個問題是目前形式的主題。 –
@RC,這就是爲什麼我創建了一個Map,並且Map的關鍵字是String。應該把「HYR」作爲關鍵,不是嗎? –