gpt4 book ai didi

java - 魔石: converting JSON to Java object when the class has a List field
转载 作者:行者123 更新时间:2023-11-29 18:39:41 26 4
gpt4 key购买 nike

假设我有这样的东西:

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 类型的对象, BC

我使用 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/

26 4 0