Чтобы начать, я просмотрел несколько других answers for similar questions, но они не отвечают на мою конкретную ситуацию.GSON Сериализуйте полиморфный объект с типом, хранящимся в другом объекте
Я разбор JSON сообщений, которые состоят из тела и заголовка, где хранит заголовок какого типа объекта тела является:
{
"body": {
"eventName": "someEventName"
},
"header": {
"purpose": "event"
}
}
В Java я моделируется эта структура, используя следующий классы:
public class Message {
public Body body;
public Header header;
}
public class Header {
public String purpose; // Marks what child class the body of the message uses
}
public abstract class Body {
// Child classes store additional fields
}
// Example implementation of the body class
public class EventBody extends Body {
public String eventName; // Name of some event
}
После выполнения некоторых исследований я обнаружил, что RuntimeTypeAdapterFactory
обычно используется для анализа/записи полиморфных объектов; однако класс RutimeTypeAdapterFactory
полагается на тип, который хранится в базовом классе полиморфного объекта (т. е. Body
). Но в этом случае это не так - тип сохраняется в другом объекте, Header
.
Что было бы лучшим способом разобрать такие объекты? Я бы хотел, чтобы вам не пришлось писать обычай Serializer
/Deserializer
для компактности, но я бы не прочь написать их, если это необходимо.
Тело является родительским классом ... –
@JawadLeWywadi Да ... Я никогда не говорил, что это не так. Комментарий в 'Body' должен был упомянуть, что дочерние классы Body могут иметь дополнительные поля, _not_ это тело является дочерним классом. – jocopa3