Проект, над которым я работаю, через MQ прошел через:
example.json
{
"templateName": "testTemplate",
"to": [
"support@test.com"
],
"cc": [
"testCc@test.com
],
"bcc": [
"testBcc@test.com
],
"from": "testFrom@test.com",
"subject": "testSubject",
"replacementValues": {
"replacementValue1": "lorem",
"replacementValue2": "ipsum"
},
"jsonObject": {
//omitted for brevity
}
}
И, как есть, он будет сопоставлен со следующим объектом:
NotificationV1.java
public class NotificationV1 {
private String templateName;
private List<String> to;
private List<String> cc;
private List<String> bcc;
private String from;
private String subject;
private Map<String, String> replacementValues;
private Map<String, String> images;
private Object jsonObject;
//getters & setters omitted for brevity
используя следующий маппер:
//no special config
notificationMessage = new ObjectMapper().readValue(jsonMessage, EmailNotificationMessage.class);
Как часть рефакторинга проекта, вышеупомянутый класс данных был изменен и теперь выглядит следующим образом:
NotificationV2.java
public class NotificationV2 {
private EmailHeaders emailHeaders;
private TemplateData templateData;
//getters and setters omitted
EmailHeaders.java
public class EmailHeaders {
private String from;
private List<String> toAddresses;
private List<String> ccAddresses;
private List<String> bccAddresses;
private String subject;
//getters and setters omitted
TemplateData.java
public class TemplateData {
private String templateName;
private Map<String, String> replacementValues;
private Map<String, String> images;
private Object jsonObject;
//getters and setters omitted
Естественно, существующее отображение генерирует ошибки вокруг нераспознанных свойств в json против нового объекта; не могу сопоставить templateNAme, найденные emailHeaders и templateData и так далее. Я не могу изменить структуру json, чтобы соответствовать новому объекту, но не нашел ресурса, который демонстрирует пример использования, подобный приведенному выше для отображения. Существуют ли аннотации, которые я могу использовать на NotificationV2 и / или какую-то конфигурацию мапперов, которую я могу собрать, чтобы все это подключить?