我正在使用第三方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