Springboot 返回json异常

编译运行环境

  • Eclipse (4.10.0)
  • java version "1.8.0_171"
  • spring-boot-starter-parent 2.1.3.RELEASE

按照网上的各种教程,新建 Spring 工程,主要参考 https://www.cnblogs.com/LUA123/p/8110285.html,成功搭建了helloworld

image.png

但是,想要返回json数据格式的时候,出现异常。
我的代码:
调用方法

    @RequestMapping("/getUser")
    public User getUser() {
        User user=new User();
        user.name = "小明";
        user.age = 22;
        return user;
    }

返回实体

    class User{
        String name;
        int age;
        String token;
    }

异常信息


image.png
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Wed Feb 20 15:28:40 CST 2019
There was an unexpected error (type=Internal Server Error, status=500).
No converter found for return value of type: class com.example.demo.controller.TestController$User

按照
https://www.cnblogs.com/lilinzhiyu/p/7921890.html 的解释

image.png

不理解,感觉没有一条符合的。

测试一

于是直接参考网上的代码,给实体类增加getter 和 setter

    class User{
        String name;
        int age;
        String token;       
        
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public String getToken() {
            return token;
        }
        public void setToken(String token) {
            this.token = token;
        }
    }

image.png

转json时的权限问题?我在编写代码的时候,getToken写成了 getoken,于是返回的结果是{"name":"小明","age":22,"oken":null}

测试二

public String getoken() {
        return token;
}

结果:

{"name":"小明","age":22,"oken":null}

转json的时候,用的不是属性的名称,反而是get中的方法,让人很不理解。

测试三

去掉get set,只修改实体类,其他不变,重新测试

    class User{
        public String name;
        public int age;
        public String token;
    }
image.png

看来差不多是权限问题了。

参考:
关于面向对象编程中很多人用get()和set()方法,而不用public的一点总结
中最后一段:
这个是public变量做不到的,安全是其中一个原因,另外楼主你要是学过Hiberante和Spring的话,就会知道
一些类的变量,即使是public的,也必须写上set方法,否则就出错,框架设计的时候就这么要求的

看来还有其他原因,如果大家有遇到的话,欢迎解答。之后有看到解释的,也会贴上来,分享

你可能感兴趣的:(Springboot 返回json异常)