杰克逊错误将对象转换为列表

时间:2017-01-13 10:03:43

标签: java spring jackson

我正在尝试向Spring控制器发送一个long值数组。

     {
       "locationIds": [
                45,
                121,
                89
            ]
     }

在我的控制器中,我已将请求正文定义为

@RequestBody Object locationIds

将此对象转换为列表时出错,下面给出了代码段

List<Long> myObjects = mapper.readValue(jsonInString, new TypeReference<Object>(){});

错误是

java.util.LinkedHashMap cannot be cast to java.util.List.

1 个答案:

答案 0 :(得分:1)

如果您使用的是Spring控制器,那么为什么要显式使用Object mapper? Spring框架中的MappingJackson2HttpMessageConverter可以将JSON有效负载绑定到类型化的bean或无类型的HashMap实例。您在mapper.readValue中收到的错误正在为您提供提示。您可以像下面一样进行测试。

ObjectMapper mapper = new ObjectMapper();
String js = "{\"locationIds\":[45,121,89]}";
Map<String,List<Long>> myObjects = mapper.readValue(js, new TypeReference<Object>(){});
List<Long> list = myObjects.get("locationIds");