用杰克逊去反序列化

时间:2015-10-27 15:09:45

标签: spring jackson spring-rest

我尝试拨打接受列表的网址。

发送的数据是

{"contactAvailableIdList":["1"],"contactIdList":["2","3"]}


Method on the server
@RequestMapping(value = "/lodgers/{lodgerId}/associate/dissociate/contact", method = RequestMethod.PUT)
public void associateLodgerAndContact(@PathVariable("lodgerId") Long lodgerId, @RequestBody @Valid final List<Long> contactIdList, @RequestBody @Valid final List<Long> contactAvailableIdList) {
    lodgerService.associateDissociateLodgerAndContact(lodgerId, contactIdList, contactAvailableIdList);
}
  

&#34; {&#34;时间戳&#34;:1445958336633,&#34;状态&#34; 400&#34;错误&#34;:&#34;差   请求&#34;&#34;例外&#34;:&#34; org.springframework.http.converter.HttpMessageNotReadableException&#34;&#34;消息&#34;:&#34;莫非   不读取文档:无法反序列化java.util.ArrayList的实例   超出[来源:START_OBJECT令牌\ n   java.io.PushbackInputStream@5a1edae4; line:1,column:1];嵌套   异常是com.fasterxml.jackson.databind.JsonMappingException:可以   不要将START.OBJECT中的java.util.ArrayList实例反序列化   token \ n at [来源:java.io.PushbackInputStream@5a1edae4;行:1,   专栏:1]&#34;,&#34;路径&#34;:&#34; / rest / lodgers / 1 / associate / dissociate / contact&#34;}&#34;

1 个答案:

答案 0 :(得分:2)

嗯,我不确定,如果你能立刻接受更多的请求机构。

标准方式是拥有课程

public class Contact{
  List<Long> contactIdList;
  List<Long> contactAvailableIdList;
}

然后接受它为

@RequestBody @Valid Contact contact

此外,您正在接收字符串数组,并尝试将它们保存到Long数组中。我也不确定,如果杰克逊在这种情况下隐式尝试将数组的字符串元素转换为long。