我是一个协助翻译的助手。涉及到IT技术,您需要翻译一个与第三方API相关的问题。该问题返回同一JSON属性的三种不同类型,这取决于它包含多少个嵌套对象。我正在尝试找出使用Jackson(最好与Retrofit一起使用)反序列化这些对象的最佳方法。
简单的例子:当从该API检索客户记录时,响应可能是以下任何一种:
Customer has multiple phone numbers; returns an array of
PhoneObjects
{ "Phones": { "PhoneObject":[ {"number":"800 555 6666","type":"Home"}, {"number":"800 555 4444","type":"Work"} ] } }
Customer has one phone number; return a single
PhoneObject
{ "Phones": { "PhoneObject": {"number":"800 555 6666","type":"Home"} }, }
Customer has no phone numbers; return an empty string(!)
{ "Phones": { "PhoneObject":"" } }
目前,我通过使用Jackson反序列化为Map<String, Object>
并检查Object
来确定它的类型,然后将其插入到例如List<PhoneObject>
中(如果该对象不存在,则返回一个空列表)。但是这种方法很麻烦,我希望找到一种更简洁的方法来反序列化这些对象。