【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方法后,需要进行修改。否则,将无法通过一般的反射获取其全部成员变量,项目容易出问题。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容