1 回答

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
更新:
BusinessContact
class 應(yīng)該用@JsonTypeName("business")
?和PersonContact
class with@JsonTypeName("personal")
而不是注釋@JsonTypeName("type")
,因?yàn)槟銘?yīng)該在繼承者中定義特定類型。
@JsonTypeInfo
注釋完全可以從子類中刪除。
更新 2:
附加PersonContact
類應(yīng)該有默認(rèn)構(gòu)造函數(shù):
public?PersonContact(){}
輸入 JSON 文件不是列表,它是具有兩個(gè)屬性的實(shí)體allContacts
和size
。因此它不能映射到ArrayList<BaseContact>
.?因此,應(yīng)創(chuàng)建具有這兩個(gè)屬性的新實(shí)體:
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;
? ?}
}
應(yīng)該更改讀取 JSON 的代碼:
ContactsWrapper contactsWrapper = new ObjectMapper().readerFor(ContactsWrapper.class).readValue(new File(fn));
abl = contactsWrapper.getAllContacts();
現(xiàn)在 JSON 被映射到ContactsWrapper并使用 getter 將聯(lián)系人列表分配給abl變量。
添加回答
舉報(bào)