我知道有类似的问题,但其中任何一个对我来说都是有用的(或似乎是)。
我需要执行以下语句:
ClassA a = new ClassA();
String JSON_str = objectMapper.writeValueAsString(a);
ClassA a1 = (ClassA)objectMapper.readValue(JSON_str, ClassA.class);
ClassB b = (ClassB)a1.getAttribute1();
如果我执行上述代码,则会收到以下错误:
“ java.util.LinkedHashMap无法转换为ClassB ”
方法getAttribute1返回定义为“Object attribute1”的ClassA attribute1。 它将在运行时使用类B的对象进行初始化。
请帮帮我^^。
提前谢谢你。 莱昂纳多
答案 0 :(得分:0)
如错误所示,a1.getAttribute1()
返回java.util.LinkedHashMap
类型的对象。因此,要么将代码更改为:
ClassA a1 = (ClassA)objectMapper.readValue(JSON_str, ClassA.class);
java.util.LinkedHashMap b = (java.util.LinkedHashMap)a1.getAttribute1();
或者检查填充此字段的ClassA中的代码,并尝试理解为什么它没有用ClassB
实例伪装对象。