将JSON RequestBody绑定到POJO是很常见的,如下所示:
@RequestMapping(value="/users", headers="Accept=application/json",method=RequestMethod.POST)
public void create(@RequestBody CustomerInfo customerInfo){
...
}
是否可以让@RequestBody绑定到非POJO,但是其他数据类型如原始数据类型和非原始数据类型?
E.G:
@RequestMapping(value="/users", headers="Accept=application/json",method=RequestMethod.POST)
public void create(@RequestBody Set<Integer> ids){
...
}
答案 0 :(得分:2)
是的,这是可能的。
根据你的例子,
public void create(@RequestBody Set<Integer> ids){
...
}
它会收到像[1,2,3]
这样的请求正文。
对于原语的另一个例子,
public void create(@RequestBody int id) {
...
}
它会收到像1
这样的请求正文。
但是,对于后一个例子,我不会说它是application/json
。
答案 1 :(得分:1)
每篇文档:
您可以使用Java Object作为@RequestBody
的类型参数。这就是说我不认为有原始人的支持。
每个文档都有这个选项:
RequestMappingHandlerAdapter支持@RequestBody注释 使用以下默认HttpMessageConverters:
- ByteArrayHttpMessageConverter转换字节数组。
- StringHttpMessageConverter转换字符串。
- 的 FormHttpMessageConverter 将表单数据转换为MultiValueMap。
- SourceHttpMessageConverter转换为/来自 javax.xml.transform.Source。