【发布时间】:2019-05-09 05:15:45
【问题描述】:
我是 Java 新手!
我的目标: 我有 Objects 的集合,可以让我通过某个键(如 Map)保留任何类型的对象(将它们放入其中并从中获取)。我可以向其中添加任何类型的对象(例如,我可以添加 MyClass 的对象)。然后我使用 GSON 将此对象序列化为 JSON 格式的分隔字符串(例如,我可以将此字符串序列化为单独的文件)。当我想取回一些对象时,我通过键从集合中请求它,并且集合将相应的字符串反序列化为 Object 对象并将其返回给我。然后我将它转换为 MyClass 以便能够使用这个对象。
下面的代码跳过了对集合的处理:
Gson gson = new Gson();
Object myClass = new MyClass(); //imitation of putting MyClass object to Collection
String json = gson.toJson(myClass); //serializing to JSON
Object myClass1 = gson.fromJson(json, Object.class); //imitation of deserializing and getting object from collection
Main.MyClass myClass2 = (Main.MyClass) myClass1;
此代码的最后一个字符串抛出 java.lang.ClassCastException,因为“gson.fromJson(json, Object.class);”返回“com.google.gson.internal.LinkedTreeMap”类型的对象
我怎样才能达到我的目标???
【问题讨论】:
-
我可能错了,但你试过
Main.MyClass myClass2 = gson.fromJson(json, Main.MyClass.class);吗?
标签: java json gson deserialization