1 回答
TA贡献1821条经验 获得超4个赞
更新:
BusinessContact
class 应该用@JsonTypeName("business")
和PersonContact
class with@JsonTypeName("personal")
而不是注释@JsonTypeName("type")
,因为你应该在继承者中定义特定类型。
@JsonTypeInfo
注释完全可以从子类中删除。
更新 2:
附加PersonContact
类应该有默认构造函数:
public PersonContact(){}
输入 JSON 文件不是列表,它是具有两个属性的实体allContacts
和size
。因此它不能映射到ArrayList<BaseContact>
. 因此,应创建具有这两个属性的新实体:
public class ContactsWrapper
{
private List<BaseContact> allContacts;
private int size;
public List<BaseContact> getAllContacts()
{
return allContacts;
}
public void setAllContacts(List<BaseContact> allContacts)
{
this.allContacts = allContacts;
}
public int getSize()
{
return size;
}
public void setSize(int size)
{
this.size = size;
}
}
应该更改读取 JSON 的代码:
ContactsWrapper contactsWrapper = new ObjectMapper().readerFor(ContactsWrapper.class).readValue(new File(fn));
abl = contactsWrapper.getAllContacts();
现在 JSON 被映射到ContactsWrapper并使用 getter 将联系人列表分配给abl变量。
添加回答
举报