Я использую API в Java Web App. API возвращает JSON и имеет поле «Переводы» для каждого Вопроса. Когда переводы доступны, он возвращается как тип вложенного объекта. Если переводы недоступны, он возвращается как пустой массив. Я использую десериализатор Джексона для десериализации результата.
{
"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");
Я получаю ClassCastException, утверждая, что ArrayList не может быть преобразован в LinkedHashMap всякий раз, когда я сталкиваюсь с вопросом без переводов.
«Переводы»: []
Как мне сопоставить эти два разных объекта. Мне известно о instanceOf , но я не хочу его использовать.