json传参后端总是收不到

controller方法


public Result add(@RequestBody CheckGroup checkGroup,Integer[] checkitemIds)

json传参


{
    "id": "1",
    "code": "asd",
    "name": "嘎嘎嘎",
    "helpCode": "女",
    "sex": "女",
    "remark": "箱底床撒打算方了福克斯",
    "attention": "阿三大苏打",
    "checkitemIds": [1,2,3,4]
}

结果总是收不到数组的参数是为什么?

把controller里的checkitemIds参数去掉,然后CheckGroup里加个参数Integer[] checkitemIds就行了

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/789111
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Controller返回json格式数据报反序列化异常的解决办法
  • 除此之外, 这篇博客: Json 格式化中的 【controller】 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 核心就是通过fastjson进行字符串的格式化

    package com.it.controller;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    import com.alibaba.fastjson.serializer.SerializerFeature;
    import org.springframework.util.StringUtils;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    @RequestMapping("/json")
    public class JsonFormatController {
    
        @PostMapping("/format")
        public String format(@RequestBody String jsonStr) {
    
            if (!StringUtils.hasText(jsonStr)) {
                return "";
            }
    
            JSONObject jsonObject = JSON.parseObject(jsonStr);
            return JSON.toJSONString(jsonObject, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue
                    , SerializerFeature.WriteDateUseDateFormat);
    
        }
    }
    

    其实这里已经实现功能了
    在这里插入图片描述


  • 您还可以看一下 黄菊华老师的JSON基础入门实战讲解课程中的 微信小程序入门到就业课(全栈课)学习说明【建议看下】小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    可能的原因是前端传递的数据格式不正确,或者后端的接收方法没有正确定义。以下是可能的解决方案:

    1. 确保前端传递的数据格式正确。按照后端定义的参数名称和类型,确保传递正确的数据。

    2. 确保后端的接收方法正确定义。如果是 JSON 数据,可以使用 @RequestBody 注解来接收数据,如下所示:

    java @PostMapping("/data") public void handleData(@RequestBody DataObject data) { // do something with data }

    定义正确的参数类型是关键,需要和前端传递的数据格式保持一致。

    1. 如果数据仍然无法接收,可以打印日志或者调试代码来查找问题的原因。可以检查 HTTP 请求的参数和请求体,或者检查是否有处理器拦截了请求。

    如果以上方法都无法解决问题,建议寻求更高级别的技术支持或者换用其他的技术方案来实现数据传递。

数组的参数在整个JSON串里面,应该在@RequesrBody参数checkGroup里面

CheckGroup是实际存在的实体类吗?(该类属性与数据库有对应的表一致),如果没有,那就需要自定义实体类,只是用来传参的

@RequestBody 注解标注的参数会从body-json里取参数,如果没有标注注解会从表单里取参数,你的传参方式,你需要把checkitemIds这个参数放在checkGroup类里。

数组参数checkitemIds在实体类里面,你只需在CheckGroup 实体里面加一个数组或集合参数就行了