У вас нет проблемы десериализации, у вас есть проблема, связанная с незнанием того, как представлять неоднородные данные.
Нет смысла говорить, что это должно быть Object
, поскольку это определенно должен быть какой-то тип ниже Object
, возможно, больше, чем один.Сначала решите эту проблему: определите все типы, которые вы можете использовать для всех вариантов использования, а затем, скорее всего, вы увидите, как решить проблему десериализации.
Конечно, для любого текста JSON, определенного между {...}
, вы всегда можете выбрать Map<String, Object>
, где Object
- это одно из:
- далее
Map<String, Object>
, где Object
следует этим правилам List<Object>
, где Object
следует этим правилам String
- одного из атомарных типов или их значений в штучной упаковке
С помощью приведенных выше правил вы можете представлять более или менее все, и вы можете написать Gson
десериализаторов для предоставления вам этих типов на основе типа JSON каждого узла (при выполнении итерации через дерево JSON).Однако не совсем понятно, какую пользу вы могли бы извлечь из такой неоднородной нетипизированной структуры данных.