C# Web API用Postman提交多条JSON数据时返回null如何解决
C# Web API POST提交多条JSON数据返回null的解决方法
问题根因
当前POST接口仅定义了接收单个studTB实体类型的参数:
[HttpPost] public IEnumerable<studTB> Post([FromBody] studTB stud)
当传入多条数据的JSON数组时,模型绑定器无法将数组结构匹配到单个实体对象,就会导致参数绑定结果为null。
实现步骤
1. 修改接口入参支持集合类型
将POST方法的入参改为集合类型,即可直接接收JSON数组格式的多条数据,完整参考代码:
[HttpPost] public IEnumerable<studTB> Post([FromBody] List<studTB> students) { // 非空校验 if (students == null || students.Count == 0) { return BadRequest("提交的数据不能为空"); } // 如果需要将数据存入数据库,补充EF持久化逻辑 using (StudentEntities db = new StudentEntities()) { db.studTBs.AddRange(students); db.SaveChanges(); } // 返回提交成功的数据 return students; }
2. Postman正确提交JSON的配置
- 请求方法选择
POST,填写对应接口地址 - 在Headers中添加配置:
Content-Type: application/json - 切换到Body栏,选择
raw类型,右侧格式下拉选择JSON,在编辑区输入数组格式的请求体,示例:
[ { "StudId": 1, "StudName": "张三", "StudAge": 20, "ClassName": "计算机科学与技术1班" }, { "StudId": 2, "StudName": "李四", "StudAge": 21, "ClassName": "计算机科学与技术2班" } ]
注意:JSON中的字段名必须和
studTB实体的公共属性名拼写一致(默认大小写不敏感),否则会出现对应字段绑定为null的问题。
3. 常见绑定失败排查点
- 不要给JSON数组额外包裹一层对象结构(比如写成
{"list": [xxx,xxx]}),除非你自定义了对应的外层接收模型 - 确认
studTB实体的属性拥有public级别的get/set访问器,且存在无参构造函数 - 确认接口路由配置正确,请求地址没有写错,没有被其他接口拦截
内容的提问来源于stack exchange,提问作者Sudharshan S
相关产品推荐
相关产品推荐

