1 回答

TA貢獻1821條經驗 獲得超5個贊
更新:
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變量。
添加回答
舉報