【发布时间】:2012-11-13 13:48:19
【问题描述】:
我有一个像这样的消息类:
class Message {
@JsonProperty("content")
Object content;
}
其中内容属性可以是User、Post 或String
我必须将此对象发送到服务器并将内容转换为正确的类。
我正在使用Jackson注解序列化JSON,但是当我尝试转换内容时,出现错误,因为属性内容像LinkedHashMap对象一样到达服务器。
错误是:
ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/MegaRadarSocial].[Resteasy]] (http-localhost-127.0.0.1-8080-1) Servlet.service() for servlet Resteasy threw exception: org.jboss.resteasy.spi.UnhandledException: java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to br.com.megaradar.megaradarsocial.model.User
我想在铸造方面得到帮助... 谢谢
【问题讨论】:
-
请发布代码的所有相关部分。你使用什么 Jackson 注释?你得到什么错误?
-
杰克逊不做基于内容的反序列化。您将不得不自己处理传入 JSON 到类型的映射。
-
我该如何做这张地图?你能告诉我正确的方法吗?
-
@Perception Jackson 可以进行多态处理,但是,通过添加额外的类型信息
-
@StaxMan - OP 使用的类仅与它们从 java.lang.Object 的扩展一样多态。您链接的教程中的示例 6 是 OP 必须执行的自定义到期序列化示例。
标签: java android json casting jackson