有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java序列化ArrayList<Objects>并返回,保留类

我正在尝试将不同对象的集合发送到接受Json对象的服务器。找出实现这一点的最佳方式

A计划: 序列化对象集合,如下所示:

ArrayList<Object> objects = new ArrayList<>();
objects.put(new Human("Johhny"));
objects.put(new Cannon(13));
objects.put(new Hamburger(1.3));
String json = Utils.getObjectMapper().writeValueAsString(objects);

序列化工作正常,当我必须反序列化时,我也会收到对象数组(精确地说是链接的哈希映射)。问题是,我不知道这些是人,大炮还是汉堡包

有没有办法将对象的类名放入json中,这样当它被反序列化时,对象映射器就知道要使用哪个类了

B计划: 解析每个LinkedHashMap,根据属性手动确定它的真实类,并手动反序列化为对象

方案C:

  • 将每种类型的对象放入具有特定类型的不同集合中
  • 序列化三个集合,并使用特定拆分器将它们组合成一个字符串
  • 按相反的顺序反序列化回来

解决方案是:

只需在写入字符串之前添加映射器设置:Utils.getObjectMapper().enableDefaultTyping(ObjectMapper.DefaultTyping.JAVA_LANG_OBJECT).writeValueAsString(objects);

感谢@dmitry zvorygin


共 (1) 个答案