Spring Boot中@RequestBody接收多维数组列表报400错误的解决咨询
解决Spring Boot多维数组列表请求体接收的400错误问题
问题根源
你的请求JSON结构和实体类定义不匹配,同时存在类型转换问题:
- 结构不匹配:实体类中
boundaries是List<PolygonRequest>,每个PolygonRequest需要一个boundary字段来承载二维数组;但请求JSON里boundaries直接是二维数组的集合,没有嵌套boundary键。 - 类型不兼容:JSON中的坐标是数值类型(如
-5.2),但实体类中boundary定义为String[][],Spring默认无法将数值自动转为字符串数组。
解决方案
方案一:修改请求JSON结构,匹配实体类
调整JSON,让boundaries的每个元素是包含boundary字段的对象,同时修正实体类的类型适配数值:
- 修改实体类类型:
@Getter @Setter public class CreateRequest { private String id; private List<PolygonRequest> boundaries; @Getter @Setter public static class PolygonRequest { // 把String[][]改为double[][],适配JSON中的数值类型 private double[][] boundary; } }
- 调整后的请求JSON:
{ "id": "Zone 112", "boundaries": [ { "boundary": [ [-5.2,-6.2], [-4.5,-7.8] ] }, { "boundary": [ [7.2,-1.6], [-3.3,-8.1] ] } ] }
方案二:修改实体类,匹配现有JSON结构
如果不想改动请求JSON,直接简化实体类,让boundaries直接对应JSON中的二维数组集合:
@Getter @Setter public class CreateRequest { private String id; // 直接用List<double[][]>接收JSON中的二维数组集合 private List<double[][]> boundaries; }
验证
修改完成后重新发送请求,Spring就能正确解析请求体,不会再返回400错误。
内容的提问来源于stack exchange,提问作者Yasas Ranawaka
相关产品推荐
相关产品推荐

