Spring Boot-构造并返回一个json对象

本文以Spring Boot-构建Spring Boot 第一个demo中项目为基础,可以先查看上一片文章。

添加User.java实体类和UserController.java。结构如下

Result.java代码如下:

package com.xiangty.common;

public class Result {

	// 正确返回代码
	private static final String SUCCESS_CODE = "10000";
	// 错误返回代码
	private static final String ERROR_CODE = "-10000";

	// 状态代码
	private String status;
	// 信息
	private String msg;
	// 内容
	private Object data;

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

	public Object getData() {
		return data;
	}

	public void setData(Object data) {
		this.data = data;
	}

	public Result() {}

	public Result(String status, String msg, Object data) {
		this.status = status;
		this.msg = msg;
		this.data = data;
	}

	public static Result ok(Object data) {
		return ok("OK", data);
	}

	public static Result ok(String msg, Object data) {
		return new Result(SUCCESS_CODE, "OK", data);
	}

	public static Result error(Object data) {
		return error("ERROR", data);
	}

	public static Result error(String msg, Object data) {
		return new Result(ERROR_CODE, msg, data);
	}

}

User.java代码如下:

package com.xiangty.pojo;

public class User {

	private String userName;
	private String passWord;
	private Integer age;
	
	public User() {
	}
	
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassWord() {
		return passWord;
	}
	public void setPassWord(String passWord) {
		this.passWord = passWord;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	
}

UserController.java类代码如下:

package com.xiangty.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.xiangty.common.Result;
import com.xiangty.pojo.User;

@Controller
@RequestMapping("/user")
public class UserController {

	@RequestMapping("/getUser")
	@ResponseBody
	public User getUser() {
		User u = new User();
		u.setUserName("testName");
		u.setAge(18);
		u.setPassWord("passWord");
		return u;
	}
	
	@RequestMapping("/getUserReturnResult")
	@ResponseBody
	public Result getUserReturnResult() {
		User u = new User();
		u.setUserName("testName");
		u.setAge(18);
		u.setPassWord("passWord");
		return Result.ok(u);
	}
}

启动项目,访问路径效果如下

一般的项目中,都回对返回类做一定的封装(上面的Resul.java类就是,不过这里的Result.java类不规范,只提供思路),访问一下路径显示结果如下:

Jackson的基本演绎法

User.java类中的修改如下:

添加@JsonIgnore注解
    /**
     *  后台推数据到前台的时候,会将passWord的信息忽略掉
     */
    @JsonIgnore
    private String passWord;


添加bitrhday属性和@JsonFormat注解
   /**
     * locale="zh" 表示中国
     * timezone="GMT+8" 表示东八区
     */
    @JsonFormat(pattern="yyyy-MM-dd hh:mm:ss", locale="zh", timezone="GMT+8")
    private Date birthday;
    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

UserController.java中,添加birthday属性值,整体代码如下

package com.xiangty.controller;

import java.util.Date;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.xiangty.common.Result;
import com.xiangty.pojo.User;

@Controller
@RequestMapping("/user")
public class UserController {

       @RequestMapping("/getUser")
       @ResponseBody
       public User getUser() {
              User u = new User();
              u.setUserName("testName");
              u.setAge(18);
              u.setPassWord("passWord");
              u.setBirthday(new Date());
              return u;
       }
      
       @RequestMapping("/getUserReturnResult")
       @ResponseBody
       public Result getUserReturnResult() {
              User u = new User();
              u.setUserName("testName");
              u.setAge(18);
              u.setPassWord("passWord");
              u.setBirthday(new Date());
              return Result.ok(u);
       }

}

启动项目,查看效果,返回结果中没有了password的信息,birthday属性也按照指定的格式输出

如有错误请指正,谢谢。

猜你喜欢

转载自blog.csdn.net/qq_33369215/article/details/89288654