You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot接收Angular表单提交时Group实体JSON反序列化错误如何解决

问题解决方案

1. 前端提交数据反序列化Group失败问题

错误原因

Jackson反序列化时收到的group字段是JSON字符串格式(如"{\"idGrp\": 2,\"nomGroup\": \"intranet\"}"),而非JSON对象格式,没有对应的String参数构造方法可以完成字符串到Group实体的转换,因此抛出异常。

解决方案

优先调整前端请求格式

Angular侧提交表单时,不要将group对象序列化后再塞入Employe参数,直接传嵌套的JSON对象即可,正确请求体示例:

{
  "matricule": 1,
  "nom": "测试",
  "prenom": "用户",
  // 其余Employe字段
  "group": {
    "idGrp": 2,
    "nomGroup": "intranet"
  }
}

后端兼容方案(无需修改前端)

  1. 为Group类补充所有私有属性的getter、setter方法,Jackson反序列化需要访问私有属性
  2. 为Group类新增String参数构造方法,内部完成JSON字符串解析:
// 引入com.fasterxml.jackson.core.JsonProcessingException、com.fasterxml.jackson.databind.ObjectMapper
public Group(String jsonStr) throws JsonProcessingException {
    Group temp = new ObjectMapper().readValue(jsonStr, Group.class);
    this.idGrp = temp.getIdGrp();
    this.NomGroup = temp.getNomGroup();
}

补充注意:你的Employe类中带Group参数的构造方法未对group属性赋值,需要补充this.group = group;否则构造出的对象group字段会为null。


2. CommandLineRunner启动报错问题

错误原因

你误用了getResourceAsStream方法,该方法是用来读取类路径下的资源文件的,你传入序列化后的JSON字符串作为参数,找不到对应的资源因此返回null,后续readValue方法传入null参数就抛出了src is null异常,你当前的CommandLineRunner逻辑完全没有必要绕一层序列化/反序列化。

修复后的代码示例

如果是测试新增员工逻辑,直接构造对象调用服务即可:

@Bean
public CommandLineRunner run(ServiceEmp serviceEmp) {
    return args->{
        Group testGroup = new Group(2L, "intranet");
        // 调用带Group参数的构造方法
        Employe e = new Employe(0,"","","","",0,"","",0,0,"","", testGroup);
        serviceEmp.addEmp(e);
        System.out.println("saved");
    };
}

如果需要测试JSON反序列化逻辑,直接处理字符串即可,不需要读取资源:

@Bean
public CommandLineRunner run(ServiceEmp serviceEmp) {
    return args->{
        String testJson = "{\"nom\":\"测试\",\"prenom\":\"用户\",\"group\":{\"idGrp\":2,\"nomGroup\":\"intranet\"}}";
        ObjectMapper objectMapper = new ObjectMapper();
        Employe e = objectMapper.readValue(testJson, Employe.class);
        serviceEmp.addEmp(e);
        System.out.println("saved");
    };
}

内容的提问来源于stack exchange,提问作者Takwa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:57:03