我正在使用第三方API,它爲相同的JSON屬性返回三種不同類型,具體取決於它包含多少個嵌套對象。我試圖找出處理使用Jackson對這些對象進行反序列化的最佳方法(最好使用Retrofit)。對多個類型的屬性進行反序列化JSON
簡化示例:從這個API檢索顧客記錄時,響應可能是任何一個:
客戶擁有的多個電話號碼;返回
PhoneObjects
{ "Phones": { "PhoneObject":[ {"number":"800 555 6666","type":"Home"}, {"number":"800 555 4444","type":"Work"} ] } }
顧客的陣列有一個電話號碼;退貨單
PhoneObject
{ "Phones": { "PhoneObject": {"number":"800 555 6666","type":"Home"} }, }
客戶沒有電話號碼;通過與傑克遜反序列化到
Map<String, Object>
和檢查Object
,以確定它是什麼類型,然後將其插入,例如返回一個空字符串(!){ "Phones": { "PhoneObject":"" } }
目前,我處理這個一個List<PhoneObject>
(如果對象不存在,則返回一個空列表)。然而,這很麻煩,並希望找到一種更簡潔的方式來反序列化這些對象。
你可以讓他們修復他們的API來返回一個理智的迴應嗎? – SLaks
我同意這將是最好的解決方案。不幸的是,這不是一種選擇。 – Rob