在 WEB 项目中返回 JSON 数据是常见的交互形式
1.添加依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
</parent>
<!--包含所有 JSON 处理的包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.定义返回方式
在 Controller 类上面用 @RestController 定义或者在方法上面用 @ResponseBody 定义,表明是在 Body 区域输出数据
@RestController
public class UserTest {
@GetMapping(value = "/user/{userId}")
public User getUserInfo(@PathVariable("userId") String userId) {
User user = new User("lisi", 18);
user.setId(Long.valueOf(userId));
return user;
}
}
3.自定义输出格式
自定义 XML 格式
@JsonProperty:用来自定义属性标签名称;
@JsonIgnore: 用来忽略不想输出某个属性的标签;
@JsonInclude: 用来动态包含属性的标签,如可以不包含为 null 值的属性
public class User {
@JsonProperty("user-name")
private String userName;
private Long id;
private Integer age;
@JsonIgnore
private String address;
@JsonInclude(JsonInclude.Include.NON_NULL)
private String memo;
// ... get set
}
4.完成对象 和 Json 的互转
jackson-databind 包里面有一个 com.fasterxml.jackson.databind.ObjectMapper 类可以完成对象和 Json 数据的互转
ObjectMapper objectMapper = new ObjectMapper();
String userJsonStr = objectMapper.writeValueAsString(user);
user = objectMapper.readValue(userJsonStr, User.class);