2016-12-02 335 views
-1

我创建JSON对象,如下如何发送JSON对象到ActiveMQ?

org.json.JSONObject json = new JSONObject(jsonString); 

我想给这个对象排队上的ActiveMQ。 我尝试使用下面的API

objectMessage.setObject(json); 

但作为JSON对象不是序列化,编译器抛出错误。

如果我将json对象转换为String,那么它正在工作。

有没有什么办法可以直接传输json对象(不转换为字符串)来排队?

+0

为什么不发送带有JSON的HTTP请求作为有效载荷? – DerStoffel

+0

是否有任何理由希望通过电线发送JSONObject?为了创建这个对象,你总是使用字符串表示,所以为什么不使用它。如果你有代表你的json的POJO类(例如,如果你使用jackson或gson),那么你可以序列化并发送这些对象,但它不会像字符串表示那样高效。 – jay

+0

嗨DerStoffel你能为我提供一个例子吗? – Sachin

回答

1

不要使用..jms.ObjectMessage,它会导致各种各样的痛苦,痛苦和愤怒。将您的JSON序列化为一个字符串,然后发送一个..jms.TextMessage。

这就是说..这一切都取决于你的用例。架构原则在运输过程中支持基于文本的格式,以实现跨平台和服务独立性的原因。如果这是一个使用情况,其中应用程序通过JMS共享数据本身,则可以使用ObjectMessages来证明它的合理性。要做到这一点更新你的JSON pojo的“..实现Serializable”,然后jms.ObjectMessage将工作。

+0

那就是我现在正在做的事情。我将JSON转换为字符串并使用字符串 – Sachin

+0

有没有更好的方法? – Sachin

+0

请参阅编辑。 “更好”是一个非常主观的目标..需要更多的细节来提供最适合您的用例的答案 –