使用杰克逊解析长阵

时间:2017-01-09 09:55:56

标签: spring http jackson

调用我的http方法时出现以下错误。(Spring启动应用程序)

  

“JsonMappingException:无法反序列化实例   java.util.ArrayList超出了START_OBJECT标记“。

它是一个DELETE调用,我正在传递我的JSON,如下所示

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

在我的控制器方面,我使用下面的代码作为我的请求主体。

@RequestBody List<Long> locationIDList

1 个答案:

答案 0 :(得分:1)

您发布的是具有数组属性的Object,而不是数组。所以你应该有一个带有 locationIds 属性的Java类 LocationIdListDto.java ,然后就可以了。

最后一个推荐。你永远不应该发布或直接从JSON返回数组,总是将它们包装在一个对象中(就像你在这里一样)。我推荐这个的原因是,API最常见的变异之一是在外层添加另一个属性。如果最外面的结构不是数组,则这是不可能的,这意味着要么打破向后兼容性,要么必须为新JSON创建新的端点方法。