如果您认为对你有帮助,请点个赞!
概述
在上一篇环境搭建及HelloWorld,我们搭建了spring boot开发环境,并开发了第一个web应用HelloWorld。
本篇将在WEB服务中,通过对象返回JSON格式的字符串。
在没有spring boot时,通常使用如下方法来实现:
- 使用JSONObject、JSONArray对象来构建JSON对象(虽然学习比较简单,但代码量很大)
- 或使用 jackson实现对象与JSON的映射 (首次使用jackjon时,各种查资料,花了数天时间)
无论使用哪种方法,我们都需要添加依赖包(那怕是通过maven,也需要在pom配置文件中添加依赖引用),还需要编写不少代码。使用spring boot时,我们只需要编写对象本身的代码,转换成JSON不需要编写一行代码(零代码)。
下面就让我们来见证奇迹吧,进入实战环节。
实战
在实现中我们将完成如下步骤:
- 创建一个用户类(User.java ) ,该类包含Id、Name属性。
- 创建一个User对象,并以JSON格式返回
准备工作
在开始实战前,需要准备好开发环境,并创建一个WEB项目。
具体请参见上一篇环境搭建及HelloWorld
新建User.java类
新建一个用户类 User.java ,具体代码如下:
//User.java
package com.example.helloworld;
import java.util.Date;
public class User {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
创建服务,将User对象以JSON返回
新建一个类 UserController.java ,具体代码如下:
//UserController.java
package com.example.helloworld;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@RequestMapping("/get") //url
public User getUser() { //直接返回User对象
User user = new User();
user.setId(1);
user.setName("Jack");
return user;
}
}
运行项目
在”HelloworldApplication.java“文件上右键,点击run 菜单项,即可启动WEB服务
通过浏览器来访问该应用,在浏览器地址栏输入: http://localhost:8080/get
结果如下图所示:
阶段小结
我们没有编写一行关于JSON的代码,也没有进行任何配置。
这就是spring boot可以简化开发,是不是很神奇。
复杂对象
首先我们增加一个地址类UserAddress.java,代码如下:
//UserAddress.java
package com.example.helloworld;
public class UserAddress {
private String zip; //邮政编码
private String address; //地址
public UserAddress(String zip, String address) {
this.zip = zip;
this.address = address;
}
public String getZip() {
return zip;
}
public void setZip(String zip) {
this.zip = zip;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
然后修改User.java ,在该类中增加地址类,增加的代码如下
private UserAddress userAddress;
public UserAddress getUserAddress() {
return userAddress;
}
public void setUserAddress(UserAddress userAddress) {
this.userAddress = userAddress;
}
最后在 UserController的getUser()方法中,增加如下代码
user.setUserAddress(new UserAddress("400000","重庆市"));
运行结果如下图:
{"id":1,"name":"Jack","userAddress":{"zip":"400000","address":"重庆市"}}
数组示例
//User.java 在该类中增加如下语句
private String[] hobbys;
public String[] getHobbys() {
return hobbys;
}
public void setHobbys(String[] hobbys) {
this.hobbys = hobbys;
}
//UserController.java 在getUser()方法中增加如下语句
user.setHobbys(new String[]{"游泳","计算机","篮球"});
运行结果如下:
{"id":1,"name":"Jack","userAddress":{"zip":"400000","address":"重庆市"},"hobbys":["游泳","计算机","篮球"]}
MAP对象示例
//UserController.java 在该类中增加如下两个方法
@RequestMapping("/map")
public Map<String, User> getUsers() {
Map<String, User> map = new LinkedHashMap<>();
User user1 = createUser(1, "Jack", new String[]{"游泳", "计算机", "篮球"});
map.put("user1",user1);
User user2 = createUser(2, "ZhangK", new String[]{"计算机", "爬山", "涉水", "开飞机"});
map.put("user2",user2);
return map;
}
private User createUser(int id, String name, String[] hobbys) {
User user = new User();
user.setId(id);
user.setName(name);
user.setUserAddress(new UserAddress("400000", "重庆市"));
user.setHobbys(hobbys);
return user;
}
运行结果如下:
注意访问url最后的路径需要修改一下: http://localhost:8080/map
{"user1":{"id":1,"name":"Jack","userAddress":{"zip":"400000","address":"重庆市"},"hobbys":["游泳","计算机","篮球"]},
"user2":{"id":2,"name":"ZhangK","userAddress":{"zip":"400000","address":"重庆市"},"hobbys":["计算机","爬山","涉水","开飞机"]}}
下一篇 spring boot 从零开始入门3: 读取属性配置文件
完