将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