【VUE+SpringBoot】前端获取到的数据与后台从数据库中获取到的数据不一致

问题

后台从数据库中查询到的数据,转换成JSON字符串传到前端后,缺少部分字段。

    @RequestMapping("/getUpdateUser")
    public String getUpdateUser(int id) {
        User user = userDao.getUpdateUser(id);
        String string = JSON.toJSONString(user);
        return string;
    }
        async showEditDialog(id) {
            const {data: res} = await this.$http.get("/getUpdateUser?id="+id);
            this.editForm = res;// 查询用户信息,回填用户编辑表单
            this.editDialogVisible = true;
        },

思路

  • 打印出后台从数据库中查询出的数据,发现字段是完整的,并无缺失。
  • 打印JSON字符串,发现缺少字段,定位到问题入口。
  • 查看JSON.toJSONString()方法后,并未发现异常。
  • 将该模块的所有文件重新审阅一遍后发现,实体类User.java中有个布尔类型的成员变量的get方法不对头,如下:
    private boolean state; // 状态

    public boolean isState() {
        return state;
    }

并不是我们平常的get方法:

    public boolean getState() {
        return state;
    }

这就导致JSON将User对象转换成json字符串时,无法通过反射获取到其state字段,最终给前端的json数据也就没有该字段。

处理

重写实体类User的get、set方法并检验,确保不再出错。重启后,测试显示正常。

归纳

对于布尔类型的成员变量,在使用IDEA生成get方法后,需要进行修改。否则,将无法通过一般的反射获取其全部成员变量,项目容易出问题。

你可能感兴趣的:(【VUE+SpringBoot】前端获取到的数据与后台从数据库中获取到的数据不一致)