当前位置: 首页 > 知识库问答 >
问题:

为什么当我通过post方法发送两个参数时会出错?

百里嘉泽
2023-03-14

我使用Java11和Spring。我试图通过post将两个对象发送到控制器,但我得到了一个错误。

这里是控制器:

@PostMapping("/new_info/buildingData")
public Map<String, List<Buildings>> getBuildingData(
        @RequestBody Boolean isIncluded,
        @RequestBody BuildingData buildingData
        ) {
    Map<String, List<Buildings>> results = new HashMap<>();
    results.put("results", buildingService.findBuildingDataByInfoId(BuildingData, isGood));
    return results;
}
{
  "isIncluded": true,
  "buildingData": {
    "id": "1232165",
    "name": "Tir44",
    "description": "West side road 45",
  }
}
 c.p.s.utility.ExceptionHandlerAdvice : <=== Exception: JSON parse error: Cannot deserialize instance of `java.lang.Boolean` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.Boolean` out of START_OBJECT token

你知道为什么我会得到这个错误以及如何修复它吗?

共有1个答案

宦砚
2023-03-14

您可以在requestBody中为布尔参数isincludebuildingData使用path变量,如下所示,这样您不需要两个requestBody,只在requestBody中传递buildingData就足够了

@RequestMapping(value = "/new_info/buildingData/{isIncluded}", method = RequestMethod.POST)
    public Map<String, List<Buildings>> getBuildingData(@RequestBody BuildingData buildingData, @PathVariable boolean isIncluded) {
...
}
 类似资料:
  • 问题内容: Java-通过POST方法发送HTTP参数? 问题答案: 在GET请求中,参数作为URL的一部分发送。 在POST请求中,将参数作为请求的正文发送到标头之后。 要使用进行POST,你需要在打开连接后将参数写入连接。 这段代码可以帮助你入门:

  • 问题内容: 我成功使用此代码通过方法发送 带有某些参数的请求 现在,我可能需要通过POST方法发送参数(即param1,param2,param3),因为它们很长。我在想为该方法添加一个额外的参数(即String httpMethod)。 我如何才能尽可能少地更改上面的代码,以便能够通过GET或发送参数POST? 我希望改变 至 本来可以解决问题的,但是参数仍然通过GET方法发送。 有没有什么方法

  • 问题内容: 我正在使用Html5服务器发送事件。服务器端是Java Servlet。我有一个要传递给服务器的json数组数据。 如果数组大小较小,则服务器端可以获取查询字符串。但是,如果数组大小很大。(可能超过数千个字符),服务器无法获取查询字符串。是否可以使用POST方法将json数组传递到服务器,从而避免了查询字符串长度的限制? 问题答案: 不可以,SSE标准不允许POST。 (出于技术原因,

  • 问题内容: 在我的Ajax代码中,我正在向go lang api发送一个关联数组,但是go lang不会接收任何数组。为什么? 为什么这个Ajax不会将数组发送到Go API?在下面的mvc结构中,我想要接收此数据: 问题答案: 您不能直接将数组从客户端发送到服务器,因为数组定义在两侧可能不相同。 有两种解决方法: 一个。您可以在clinet中将数组转换为json字符串,然后将其作为字符串参数发送

  • 我已经将“mytest.html”发送到IIS上,这个项目由WebApi Angularjs组成,我无法获得对我的WebApi的正确请求……我不知道为什么? 超文本标记语言代码 【WebApi代码】 [模型代码] 【注册代码】 请注意,我的google chrome控制台中的错误是: 有棱角的js:10695职位http://localhost:60031/api415(不支持的媒体类型) 我也尝

  • 我做了研究,发现应该这样做我不知道java对象像指针一样工作。我以为只有当两个对象相等时才会传递值。我甚至创建了一个简单的测试应用程序,它可以设置和获取一个对象的数量。再一次,我把这两个对象都等同起来。更改一个对象的元素似乎也会影响另一个对象。我不知道该怎么在谷歌上搜索这个。所以我才把整个故事都告诉你。我只得到与c编程有关的文档。我觉得我的底子都碎了。我现在才知道是如何工作的。我试着做 这不影响N