杰克逊为列表添加包装器

时间:2018-11-27 11:44:17

标签: java json spring jackson

我有一个控制器,它返回对象的ArrayList:

@GetMapping("/{access_token}/connected_instagram_accounts")
public ResponseEntity<List<InstagramAccountDTO>> getConnectedInstagramAccounts(@PathVariable("access_token") String accessToken) {
    log.debug("InstaramController.getConnectedInstagramAccounts() was called. access_token = {}", accessToken);

    List<InstagramAccountDTO> result = instagramService.getAllConnectedInstagramAccounts(accessToken);

    return new ResponseEntity<>(result, HttpStatus.OK);
}

在邮递员中,我看到此端点返回以下结果:

{
    "ArrayList": []
}

但是我希望ArrayList不应该有任何包装对象,而且我希望得到以下结果:

[]

我尝试在调试器中检查序列化,并发现jackson以正确的方式对其进行了序列化。 enter image description here

我需要在哪里寻找问题?哪个类负责序列化 ResponseEntity

1 个答案:

答案 0 :(得分:1)

通常,这是我的愚蠢错误。我以前为杰克逊添加了以下设置,却忘了:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);

所以,这就是杰克逊为我的列表添加包装器对象的原因。