我正在从API读取JSON,转换为POJO,执行一些逻辑,然后将POJO写入JSON文件。
这是从API输入的JSON的样子
String jsonStr = "[{\"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\"}]";
这是一个带有一个Json对象的JSONArray。
POJO看起来像这样
@JsonIgnoreProperties(ignoreUnknown = true)
public class AirConfig {
String airportCode;
Integer airportId;
Boolean metroCodeBool;
@JsonProperty("airportCode")
public String getAirportCode() {
return airportCode;
}
@JsonProperty("AirportCode")
public void setAirportCode(String airportCode) {
this.airportCode = airportCode;
}
@JsonProperty("airportId")
public Integer getAirportId() {
return airportId;
}
@JsonProperty("AirportID")
public void setAirportId(Integer airportId) {
this.airportId = airportId;
}
@JsonProperty("metroCodeBool")
public Boolean getMetroCodeBool() {
return metroCodeBool;
}
@JsonProperty("MetroCodeBool")
public void setMetroCodeBool(Boolean metroCodeBool) {
this.metroCodeBool = metroCodeBool;
}
}
在setter和getter上我有一个不同的@JsonProprty值,因为从API读取(即反序列化)时字段的名称与将POJO写入文件(即序列化)时的字段名称不同。
这就是我读取字符串的方式
ObjectMapper mapper = new ObjectMapper();
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
TypeReference<List<AirConfig>> typeRef = new TypeReference<List<AirConfig>>() {};
List<AirConfig> configs = mapper.readValue(jsonStr, typeRef);
//Logic
但我一直收到此错误-
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "airportCode" (class org.json.JSONObject), not marked as ignorable (0 known properties: ])
我该如何解决?
答案 0 :(得分:0)
您有重复的属性airportCode
和AirportCode
,我只需将@JsonProperty("AirportCode")
添加到airportCode
:
@JsonProperty("AirportCode")
String airportCode;
public String getAirportCode() {
return airportCode;
}
public void setAirportCode(String airportCode) {
this.airportCode = airportCode;
}