携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第33天,点击查看活动详情
今天我们来学习一下如何返回json对象
1.pom.xml文件新增三个依赖(jackson-core,jackson-databind,jackson-annotations)
ps:这边三个依赖的版本我们设置成一样,都是2.9.9
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.9</version>
</dependency>
2.依赖更新之后,我们新增的依赖导入到lib中
3.返回单个Person对象
@GetMapping("person")
public Person getPerson(Integer id){
Person p1 = new Person();
if(id==1){
p1.setName("xiaoming");
p1.setAge(10);
}else {
p1.setName("haha");
p1.setAge(11);
}
return p1;
}
代码说明:
public Person:我们之前的返回值为void String Int等类型,现在我们要返回的是对象,所以可以设置成Person对象
- 重新启动应用
- 浏览器访问且参数id的值为1:http://localhost:8088/restfull/person?id=1
- 返回结果:
- 浏览器访问且参数id的值为2:http://localhost:8088/restfull/person?id=2 -返回结果:
4.返回多个Person对象
//返回多个对象
@GetMapping("/persons")
public List<Person> getPersons(){
List list = new ArrayList<>();
Person p1 = new Person();
p1.setAge(10);
p1.setName("haha");
p1.setCreateTime(new Date());
list.add(p1);
Person p2 = new Person();
p2.setAge(11);
p2.setName("xiaohong");
p1.setCreateTime(new Date());
list.add(p2);
return list;
}
代码说明: 多个对象,使用List方式返回
- 重启应用
- 浏览器访问:http://localhost:8088/restfull/persons
- 存在的问题,createTime类型为Date,返回值却是时间戳毫秒的形式
解决方案:在定义时间字段的entity类中,注解说明@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- 重启项目
- 浏览器访问
发现时间和当前的时间相差8个小时,这是因为时区导致的问题,因此我们还要进行时区的设置
- 重启项目
这时候已经达到我们的要求: