我有一個錯誤的傑克遜反序列化一個json文件到一個poco的問題。這是我的代碼:反序列化映射傑克遜
JsonParser jp = new JsonFactory().createJsonParser(new File(pathFile));
ObjectMapper objectMapper = new ObjectMapper();
MappingIterator<AnimalBean> animalsss = objectMapper.readValues(jp, AnimalBean.class);
while (animalsss.hasNext())
{
AnimalBean abba = animalsss.next();
System.out.println(abba.getNom());
}
我的POCO命名AnimalBean:
public class AnimalBean
{
private String id;
private String nom;
private String nom_scientifique;
private String classe;
private String ordre;
private String famille;
private String details_zone;
private String poids;
private String duree_gestation;
private String nb_gestation;
private String longevite;
private String description;
private String images;
... + all getter/setter
} 我的JSON文件:
{
"zoo": {
"animaux": {
"animal": [{
"id": 1,
"nom": "test",
"nom_scientifique": "test2",
"classe": 1,
"ordre": 3,
"famille": 4,
"details_zone": "Zones",
"poids": "80",
"duree_gestation": "11",
"nb_gestation": "1",
"longevite": "25 ans",
"description": "texte de description"
}]
}
}
}
當我執行我的代碼,我有以下錯誤:無法識別的字段「動物園」(類AnimalBean),未標記爲可忽略。我知道問題是我的json文件不是直接由動物開始,但我不能改變它,因爲它不是我的。我已經嘗試將objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);但它改變了一切。
有人可以幫助我嗎?
上面的代碼是有點冗長:線2和3是不必要的 - 只使用'objectMapper.readTree(新文件(pathFile) )'。此外,'JsonNode.asParser()'可用於簡化其餘代碼。但基本的想法是健全的。 – StaxMan