Я получил сообщение JSON от rabbitmq и имеет следующий формат:
{
messageId: 123,
content: {
id: "P123456",
status: false,
error: {
description: "Something has gone wrong",
id: 'E400'
}
}
}
Как видите, в сообщении есть несколько вложенных объектов.
Когда придет это сообщение, я сериализую его, используя Джексона. Однако сейчас мне нужно создать несколько классов только для одного сообщения.
В приведенном выше примере сообщения я должен создать 3 класса только для сериализации и преобразования его в класс MainMessage
, например так:
public class MainMessage {
private int messageId;
private MessageContentObject content;
// getters/setters...
}
public class MessageContentObject {
private String id;
private boolean status;
private MessageErrorObject error;
// getters/setters...
}
public class MessageErrorObject {
private String description;
private string id;
// getters/setters...
}
Это кажется очень громоздким, поскольку в некоторыхиз сообщений, вложение может быть довольно глубоким, и мне придется создать множество классов только для того, чтобы преобразовать полезную нагрузку JSON в объект класса MainMessage
. MessageContentObject
и MessageErrorObject
в основном избыточны, потому что я никогда не буду использовать классы напрямую где-либо еще в коде. Я бы по-прежнему значения в них через MainMessage
хотя, например:
@RabbitListener
public void consumeMessage(MainMessage msg) {
System.out.println(msg.getContent().getError().getDescription());
}
Я использую Spring с Spring Boot. Действительно ли это единственный способ, который я могу сделать, когда дело доходит до работы с вложенными полезными нагрузками JSON?