В моей компании есть фиксированная структура сообщений JSON:
{
"headerVal1": ""
"headerVal2": ""
"customPayload": {
"payloadType":""
}
}
Я хотел бы иметь какую-то библиотеку, которая позволяет мне не заботиться о структуре сообщений, определенной компанией, а вместо этого просто отправлять и получать полезную нагрузку.
Моя идея состояла в том, чтобы определить структуру шаблона компании как один объект и использовать подтипы PayloadObject
.
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.MINIMAL_CLASS,
property = "payloadType",
visible = false)
public abstract class PayloadObject {
}
Теперь я могу создавать подклассы PayloadObject, и его можно автоматически десериализовать в этой структуре, если свойство payloadType
имеет строку ".SubTypeName"
.
Это проблематично, так как я не могу его настроить, даже удалить излишнее .
в начале. К сожалению, это не обязательно совместимо с другими существующими в компании системами, с которыми нам нужно взаимодействовать.
Альтернативой является добавление @JsonSubTypes
-аннотации, в которой я могу добавить все возможные подтипы - что я не хочу знать при написании библиотеки. Так что эта опция не будет работать для меня.
Я думал, это может помочь иметь @JsonType
-аннотацию с подтипами, но мне все еще нужно добавить @JsonSubTypes
, что не помогает.
Есть ли способ добавить подтипы к базовому типу без изменения java-файла базовых типов?
Если это поможет: мы работаем с Java Spring.