作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有这样的东西:
public class Container implements Serializable {
private List<Object> elements;
[... some other fields ...]
}
public class A implements Serializable {
...
}
public class B implements Serializable {
...
}
public class C implements Serializable {
...
}
哪里List<Object> elements
包含 A
类型的对象, B
或 C
我使用 Moshi 将其转换为 JSON(并且效果很好)并将其转换回 Java。无法转换回 Java。
似乎List<Object> elements
无法转换回来,列表的所有元素都转换为 LinkedHashTreeMap
对象。
解决这个问题的最佳方法是什么? (如果有办法的话!)
谢谢。
最佳答案
Jesse Wilson 的回答非常有效:
public class Container implements Serializable {
private List<Item> elements;
[... some other fields ...]
}
public abstract class Item implements Serializable {}
public class A extends Item {
...
}
public class B extends Item {
...
}
public class C extends Item {
...
}
...
Moshi moshi = new Moshi.Builder()
.add(PolymorphicJsonAdapterFactory.of(Item.class, "item_type")
.withSubtype(A.class, "a")
.withSubtype(B.class, "b")
.withSubtype(C.class, "c"))
.build();
containerAdapter = moshi.adapter(Container.class);
关于java - 魔石: converting JSON to Java object when the class has a List<Object> field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53295779/
我是一名优秀的程序员,十分优秀!