我正在创建JSON对象,如下所示
class Abc
{
public:
Abc() { std::cout << " ABC::ABC\n"; }
Abc& doIT() { std::cout << " Abc::doIT\n"; return *this; }
~Abc() { std::cout << " ABC::~ABC\n"; }
};
我想将此对象发送到ActiveMQ上的队列。 我试图使用以下API
const Abc& ap = Abc().doIT(); //After this line ap references garbage
但由于json对象不可序列化,编译器会抛出错误。
如果我将json对象转换为String,那么它正在工作。
有什么方法可以直接将json对象(不转换为String)转移到队列?
答案 0 :(得分:1)
不要使用..jms.ObjectMessage,它会导致各种各样的痛苦,痛苦和愤怒。将您的JSON序列化为字符串并发送..jms.TextMessage。
有人说......这一切都取决于你的用例。由于跨平台和服务独立性原因,在传输过程中存在支持基于文本的格式的架构原则。如果这是一个用例,其中相同的应用程序通过JMS共享数据b / w本身,则可以使用该参数来证明使用ObjectMessages。为此,请将您的JSON pojo更新为&#34; ..实现Serializable&#34;然后jms.ObjectMessage将起作用。