2.4 从对象自动构建json

上一节返回的JSON字符串,是用字符串拼接构建的,如果要返回的数据更加复杂,就很容易出错,为了避免手动构建复杂的JSON串,Spring Boot可以直接从对象中生成JSON数据。下面是一个简单的例子。
首先在包com.example.restservice里创建一个类Greeting.java,这只是一个普通类,用来表示一个问候语(greeting),如代码所示:
package com.example.restservice;
public class Greeting{
    private final long id;
    private final String info;
    public Greeting(long id,String info){
        this.id=id;
        this.info=info;
    }
    public long getId(){
        return id;
    }
    public String getInfo(){
        return info;
    }
}
接下来把root函数修改如代码所示:
package com.example.restservice;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
 
@RestController 
public class GreetingController{
    @CrossOrigin 
    @GetMapping("/")
    public Greeting root(){
        Greeting greeting=new Greeting(0,"Good");
        return greeting;
    }
}

响应方法root直接返回对象,Spring Boot的HTTP消息转换器会自动将此对象序列化为JSON格式并发送。直接在浏览器上访问Spring Boot的服务,http://localhost:8081/,就可以看到响应的JSON,如代码7-9所示:
{
"id":0,"info":"Good"
}
这个JSON仍然可以在前端使用,只是id这个值并没有用到,前端不需要修改,刷新一下页面就可以看到Good在页面上。