Примечание: Этот ответ был основан на первой версии вопроса.Изменения и последующие вопросы меняют вещи.
ps Я не верю, что мне нужен JsonSerializer, это должно работать из коробки:)
Этосовсем не так.Пример JSON, который вы опубликовали, не соответствует структуре класса Java, которую вы, очевидно, хотите связать и сгенерировать.
Если вы хотите использовать JSON в таком виде из Java, вам определенно понадобится пользовательская обработка сериализации.
Структура JSON:
an object with two elements
element 1 is a string named "geometryType"
element 2 is an object named "geometries", with differing elements based on type
Структура Java:
an object with two fields
field 1, named "geometryType", is a complex type GeometryType
field 2, named "geometries" is a Collection of AbstractGeometry objects
Основные различия:
- Строка JSON не соответствует типу Java GeometryType
- Объект JSON не соответствует типу Java. Коллекция
. Учитывая эту структуру Java, подходящей структурой JSON будет
an object with two elements
element 1, named "geometryType", is a complex object, with elements matching the fields in GeometryType
element 2, named "geometries", is a collection of objects, where the elements of the different objects in the collection differ based on specific AbstractGeometry types
. Вы уверены, что опубликованная вами информациядействительно то, что вы хотели?Я предполагаю, что любая или обе структуры должны быть изменены.
Что касается любого вопроса о полиморфной десериализации, пожалуйста, обратите внимание, что эта проблема уже обсуждалась несколько раз на StackOverflow.com.Я разместил ссылку на четыре разных таких вопроса и ответов (некоторые с примерами кода) на Могу ли я создать экземпляр суперкласса и создать конкретный подкласс на основе предоставленных параметров .