spring boot 从零开始入门2: REST服务通过对象返回JSON

如果您认为对你有帮助,请点个赞!

概述

在上一篇环境搭建及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
结果如下图所示:

spring boot 从零开始入门2: REST服务通过对象返回JSON_第1张图片
image.png

阶段小结

我们没有编写一行关于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 getUsers() {
        Map 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: 读取属性配置文件

你可能感兴趣的:(spring boot 从零开始入门2: REST服务通过对象返回JSON)