## 场景描述 在Spring Boot项目中, 很多场景是将一个实体对象返回为JSON格式的字串, 但是在返回时需要指定一个String类型的属性返回的是Boolean类型的值。 ## 示例说明 举例来说:定义了一个Animal类,该类有两个属性 name(动物的名字 )和extinct(该动物是否灭绝)。该类的定义如下: ``` public class Animal { private String name; private String extinct; //属性setter、getter方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public String getExtinct() { return extinct; } public void setExtinct(String extinct) { this.extinct = extinct; } } ``` 定义一个REST类型的控制器类JsonController , 该类中有一个接口方法str2bool(),方法返回一个Animal对象,代码如下: ``` @RestController @RequestMapping(value = "/restjson") public class JsonController { @GetMapping(value = "/str2bool") public Animal str2bool() { Animal tiger = new Animal(); tiger.setName("Tiger"); tiger.setExtinct("false"); return tiger; } } ``` 以为以上控制器使用@RestController 注解,所以返回的是一个JSON字符串,启动项目之后,在浏览器中输入: [http://localhost:8080/rest/str2bool](http://localhost:8080/rest/str2bool), 返回的页面如下: ![](https://img.kancloud.cn/a1/33/a133796fc57f8d555d64ff7f738df1d2_537x119.png) 在Spring Boot配合前端框架开发时, 比如Ext JS, 有时候对于返回的数据类型有特殊要求,比如某些组件(比如Checkbox)对数据类型是敏感的, 也就是说 "false"和 fasle是严格区分的, 虽然也可以通过前端进行类新的转换, 但如果后端服务直接返回相应的类型看上去更简单, 于是乎, 首选想到的就是@JsonFormat这个注解。 com.fasterxml.jackson.databind.ser.BeanSerializer Bean序列化器 @JsonFormat可以把日期类型的属性转换成指定格式的字符串, 看上去应该可以生效, 查看一下注解的说明,的确也有布尔的设定。 某个REST接口 将实体类对象 @JsonFormat(using = StringToBoolSerializer.class)