我有一个场景,我必须将JMS消息保存在磁盘上。我使用Gson库以JSON格式编写消息,如下所示:
Gson gson = new Gson();
String json = gson.toJson(message);
bufferedWriter.write(json);
但是当我尝试阅读此消息时,
Message m = gson.fromJson(json, Message.class);
System.out.println(m.getJMSType());
我得到一个例外:
java.lang.RuntimeException: Unable to invoke no-args constructor for interface javax.jms.Message. Register an InstanceCreator with Gson for this type may fix this problem.
at com.google.gson.internal.ConstructorConstructor$12.construct(ConstructorConstructor.java:210)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:207)
at com.google.gson.Gson.fromJson(Gson.java:814)
at com.google.gson.Gson.fromJson(Gson.java:779)
at com.google.gson.Gson.fromJson(Gson.java:728)
at com.google.gson.Gson.fromJson(Gson.java:700)
如何从Json字符串中读取JMS消息?
答案 0 :(得分:0)
Message
是一个界面。 Gson无法初始化它。如果实际的实现类已知/在您的控制之下 - 您可以用
Message m = gson.fromJson(json, ActiveMQBlobMessage.class);
否则,如果您需要界面 - 您可以查看this帖子。