Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java API针对不同的场景返回不同的对象类型_Java_Json_Jackson - Fatal编程技术网

Java API针对不同的场景返回不同的对象类型

Java API针对不同的场景返回不同的对象类型,java,json,jackson,Java,Json,Jackson,我正在Java Web应用程序中使用API。API返回JSON,每个问题都有字段“Translations”。当翻译可用时,它将作为嵌套对象类型返回。如果没有可用的翻译,它将作为空数组返回。我正在使用Jackson反序列化程序对结果进行反序列化 { "result" :{"QI": { "Question": "Select City", "Option": { "1": {

我正在Java Web应用程序中使用API。API返回JSON,每个问题都有字段“Translations”。当翻译可用时,它将作为嵌套对象类型返回。如果没有可用的翻译,它将作为空数组返回。我正在使用Jackson反序列化程序对结果进行反序列化

 {
     "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”