将json解析为scala case类时出错

在我的spring(mvc)web应用程序中,我在我的scala代码中使用org.codehaus.jackson.map.ObjectMapper将我的json映射到使用case类的scala对象。 我的Json字符串是一个json对象数组。 所以我使用:

val user = mapper.readValue(myJson, classOf[List[MyClass]])

这行会引发一个错误:

线程“main”中的异常org.codehaus.jackson.map.JsonMappingException:无法构造scala.collection.immutable.List的实例,问题:抽象类型只能通过附加类型实例化

我正确使用它还是有其他方法?


问题是Java类型的擦除。 classOf[List[MyClass]]在运行时与classOf[List[_]] 。 这就是为什么杰克逊无法知道,要创建哪些类型的元素。

幸运的是,Jackson不支持使用JavaType解析,它描述了类型本身。

这里是一个简单的Java示例:

JavaType type = mapper.getTypeFactory().constructCollectionType(List.class, MyClass.class);
mapper.readValue(myJson, type);
链接地址: http://www.djcxy.com/p/68277.html

上一篇: Error while Parsing json into scala case class

下一篇: Need json deserializer for 3rd