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就行了
核心就是通过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 数据,可以使用 @RequestBody
注解来接收数据,如下所示:
java @PostMapping("/data") public void handleData(@RequestBody DataObject data) { // do something with data }
定义正确的参数类型是关键,需要和前端传递的数据格式保持一致。
如果以上方法都无法解决问题,建议寻求更高级别的技术支持或者换用其他的技术方案来实现数据传递。
数组的参数在整个JSON串里面,应该在@RequesrBody参数checkGroup里面
CheckGroup是实际存在的实体类吗?(该类属性与数据库有对应的表一致),如果没有,那就需要自定义实体类,只是用来传参的
@RequestBody 注解标注的参数会从body-json里取参数,如果没有标注注解会从表单里取参数,你的传参方式,你需要把checkitemIds这个参数放在checkGroup类里。
数组参数checkitemIds在实体类里面,你只需在CheckGroup 实体里面加一个数组或集合参数就行了