1 回答
TA貢獻1821條經驗 獲得超5個贊
更新:
BusinessContactclass 應該用@JsonTypeName("business")?和PersonContactclass 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變量。
添加回答
舉報
