当前位置: 首页 > 知识库问答 >
问题:

如果特定类型的对象作为对象序列化到JSON中,如何在Java中从JSON反序列化?

何安宜
2023-03-14

我在爪哇是新来的!

我的目标:我有收集的对象,让我保持任何类型的对象通过一些键(如地图)(把他们到它和从)。我可以向它添加任何类型的对象(例如,我可以添加MyClass的对象)。然后,我使用GSON序列化这个对象以JSON格式分离字符串(例如,我可以序列化这个字符串以分离文件)。当我想拿回某个对象时,我通过键从collection请求它,collection将对应的字符串反序列化到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”类型的对象

我怎样才能达到我的目标???

共有1个答案

龚沛
2023-03-14

这可能是因为当您使用gson.fromjson(json,object.class)时,您将其强制转换为对象,而不是MyClass。如果您使用gson.fromjson(json,MyClass.class)然后强制转换,那么它将返回正确的值。否则,它们将生成一个简单的对象类。

 类似资料:
  • 我有一个简单的JSON语句,类型非常适合需要。像这样 或 我使用POJO类映射这个json字符串和pojo类代码是给bleow 我正在使用jaxb和jakson。我正在实现webservice来处理json语句,所以我使用bean类来映射json。但是当我使用映射这个json时,它会给出以下异常 org.codehaus.jackson.map.JsonMappingExcture:名称为"mbo

  • 问题内容: 我有一个Cabin类,其中包含Row对象的列表。我想像这样序列化对象,但是在反序列化时,我希望Row对象是从Row对象继承的RowRule对象。下面是我一直在尝试的一些示例代码。 问题答案: 简单的答案是使用a 并从返回a : 但是,使用意味着您的JSON中可能存在多态属性。不幸的是,忽略了这些属性。因此,有必要做一些额外的工作并创建: 然后像这样使用它: 原型小提琴。 最后,在使用时

  • 有没有办法将一般对象序列化为Json并将Json反序列化为对象<如果对象是一个实体,我可以使用Jackson 2库来实现这个目的<但是如果对象是一个普通类,我该怎么做呢? 例如,我想序列化com.datastax.driver.core.querybuilder。将更新为Json并保存到DB,然后搜索并反序列化它以更新对象,最后将其用作com.datastax.driver.core.Sessio

  • 问题内容: 我正在使用dart包json_serializable进行json序列化。查看flutter文档,它显示了如何反序列化单个对象,如下所示: 但是,我对dart不够熟悉,无法弄清楚如何对项目列表而不是单个实例执行相同的操作。 问题答案: 好吧,您的服务将处理作为地图的响应正文,或相应地处理地图列表。根据您所拥有的代码,您要核算1件商品。 如果响应主体是可迭代的,那么,如果我正确理解了您的

  • 为了确保在我的RESTful web服务中来回发送的数据不冗余,每个嵌套对象都只序列化了它的ID(消息的用户只序列化了用户ID,因为客户端和服务器都已经知道用户的所有详细信息)。 序列化工作正常,产生以下效果: 问题:反序列化不会生成仅具有其ID的嵌套对象。生成的反序列化嵌套对象为空。 以下是前面提到的消息和用户对象。序列化“策略”是从此处指定的第三个选项中使用的:如何仅序列化Jackson的子级

  • 我尝试反序列化json: 我有两个实体: 和 如何使用一个json条目同时反序列化两个实体?以下是使用Jackson ObjectMapper的main摘录: 它解析日期、uuid和数据集,但不能解析具有hmm_subfamily、hmm_evalue和hmm_score值的HmmResult对象:我得到错误:p.getHmmResult():null。(HmmResult hm=ObjMappe