问题描述
{
"EngineData": [
{
"make": "Toyota","transmission": "Manual","fuel": "Petrol"
},{
"make": "GMC","transmission": "Auto",{
"make": "Honda","fuel": "Petrol"
}
]
}
我的POJO定义如下
@JsonIgnoreProperties(ignoreUnkNown = true)
public class EngineData implements Serializable {
@JsonProperty("make")
private String make;
@JsonProperty("transmission")
private String transmission;
@JsonProperty("fuel")
private String fuel;
//getters and setters
}
我想读给List<EngineData>
我写了以下内容,但它没有将String读取到EngineData列表中
List<EngineData> engineDataList =null;
ObjectMapper mapper = new ObjectMapper();
engineDataList = mapper.readValue(myJsonString,new TypeReference<List<EngineData>>() {
});
不确定这有什么问题
解决方法
您的JSON对应于一个对象,例如:
class CustomObject {
List<EngineData> EngineData;
//...
}
它将与以下JSON一起使用:
[
{
"make": "Toyota","transmission": "Manual","fuel": "Petrol"
},{
"make": "GMC","transmission": "Auto",{
"make": "Honda","fuel": "Petrol"
}
]
如果您被迫使用此JSON,我认为您需要编写一个自定义反序列化器。 cf. https://www.baeldung.com/jackson-deserialization
,对象无法映射到列表,
请参阅此以映射给定的json:
public class EngineDataList {
@JsonProperty("EngineData")
List<EngineData> EngineData;
}
EngineDataList engineDataList =null;
ObjectMapper mapper = new ObjectMapper();
engineDataList = mapper.readValue(myJsonString,new TypeReference<EngineDataList>() {});