当我在请求正文下为POST请求提供多个json请求时,第一个请求被接受,其余请求被忽略。
我实际上不想发送列表作为请求,我正在请求中提供多个请求或说重复的请求。
这里是一个例子:
请求:
{
"Business": {
"name": "ABC"
}
}
{
"Business": {
"name": "XYZ"
}
}
控制器的方法:
Report getData(@RequestBody final Info info){
//Some code here...
}
此处 Info 是模型类,进一步具有带有getter和setter方法的 Business 类
当我在反序列化时发布上述请求时,第一个块转换为java对象,但是第二个块被简单地忽略了。我知道这是有效的json,但不明白为什么在反序列化时第二个块会被忽略。
我尝试了反序列化和杰克逊解析器属性,但是找不到任何可用的解决方案。我正在使用杰克逊库和Spring Boot框架。
我期望的行为是它应该抛出Bad Request而不是将其视为有效的json请求。
建议一种实现此目的的方法。谢谢!
答案 0 :(得分:0)
您是list
的sendind人,因此最好采用以下格式:
{
"Businesses" : [
{"name": "ABC"},
{"name": "ABC"}
]
}
如果接收到list
,则控制器中的方法应接受一个列表:
@POST
@Path("/somePath")
@Consumes({ MediaType.APPLICATION_JSON })
your_method(ArrayList<Business> businesses){
//...your code
}
答案 1 :(得分:0)
因此,您的Array.map
批注应使用@RequestBody
而不是List<Info>
,并且在发送数据Info
时也应使用json列表
答案 2 :(得分:0)
您可以像这样发布一个JsonArray:
[
{
"Business": {
"name": "ABC"
}
}
{
"Business": {
"name": "XYZ"
}
}
]
不仅仅是循环JsonObjects。 您可以使用Google的GSON或我个人喜欢使用的MinimalJson(https://mvnrepository.com/artifact/com.eclipsesource.minimal-json/minimal-json)依赖项来解析对象并确定它们是否符合标准。