2016-12-02 334 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

請參閱編輯。 「更好」是一個非常主觀的目標..需要更多的細節來提供最適合您的用例的答案 –