Java API针对不同的场景返回不同的对象类型
我正在Java Web应用程序中使用API。API返回JSON,每个问题都有字段“Translations”。当翻译可用时,它将作为嵌套对象类型返回。如果没有可用的翻译,它将作为空数组返回。我正在使用Jackson反序列化程序对结果进行反序列化Java API针对不同的场景返回不同的对象类型,java,json,jackson,Java,Json,Jackson,我正在Java Web应用程序中使用API。API返回JSON,每个问题都有字段“Translations”。当翻译可用时,它将作为嵌套对象类型返回。如果没有可用的翻译,它将作为空数组返回。我正在使用Jackson反序列化程序对结果进行反序列化 { "result" :{"QI": { "Question": "Select City", "Option": { "1": {
{
"result" :{"QI": {
"Question": "Select City",
"Option": {
"1": {
"Display": "Washington DC"
},
"2": {
"Display": "New Delhi"
},
"3": {
"Display": "London"
}
},
"Transalations": []
},
"Q2": {
"Question": "Select Country",
"Option": {
"1": {
"Display": "India"
},
"2": {
"Display": "USA"
},
"3": {
"Display": "UK"
}
},
"Transalations": {
"ZH-T": {
"Question": "選擇國家",
"Option": {
"1": {
"Display": "印度"
},
"2": {
"Display": "美國"
},
"3": {
"Display": "英國"
}
}
},
"ES-ES": {
"Question": "Seleccionar país",
"Option": {
"1": {
"Display": "India"
},
"2": {
"Display": "Estados Unidos"
},
"3": {
"Display": "Reino Unido"
}
}
}
}
}
}
}
我正在使用映射对象映射响应类中的结果字段:
Map<String, Object> result
映射结果
当我在使用结果获取“Q1”后尝试获取翻译时
Map<String,Object> translations = (Map<String,Object>)questionDetails.get("Transalations");
Map translations=(Map)questionDetails.get(“translations”);
我得到ClassCastException声明,每当我遇到没有翻译的问题时,ArrayList不能转换为LinkedHashMap
“交易”:[]
如何映射这两个不同的对象。我知道instanceOf,但不想使用它。在java中使用instanceOf是唯一的选择。Jackson在引擎盖下使用相同的方法来解析数字、对象等 此外,您还可以为响应指定一个类,并创建自定义反序列化器,该反序列化器无论如何都应该使用“instanceOf”