SpringBoot 数据返回

  1. 定义数据处理类-自定义响应数据结构

千万不要忘了getter 和 setter方法,不然会报错406

package com.example.example48.entity;

public class DataVo {
    //响应业务状态
    private Integer code;

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    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;
    }

    //响应消息
    private String msg;
    //响应中的数据
    private Object data;

    public DataVo(Integer code,String msg,Object data){
        this.code=code;
        this.msg=msg;
        this.data=data;
    }
    public DataVo(Object data){
        this.code=200;
        this.msg="OK";
        this.data=data;
    }

    public DataVo(){

    }
}
  1. 将json结果转化为JSONResult对象
package com.example.example48.utils;


import com.example.example48.entity.DataVo;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;

public class JsonResult {
    //定义jackson对象
    private static final ObjectMapper MAPPER=new ObjectMapper();
    public static DataVo build(Integer status, String msg, Object data){
        return new DataVo(status,msg,data);
    }
    public static DataVo ok(Object data){
        return new DataVo(data);
    }
    public static DataVo ok(){
        return new DataVo(null);
    }
    public static DataVo errorMsg(String msg){
        return new DataVo(500,msg,null);
    }
    public static DataVo errorMap(Object data){
        return new DataVo(501,"error",data);
    }
    public static DataVo errorTokenMsg(String msg){
        return new DataVo(502,msg,null);
    }
    public static DataVo errorException(String msg){
        return new DataVo(555,msg,null);
    }

    //将json结果转换为DataVo对象
    public static DataVo formatToPojo(String jsonData,Class<?> clazz){
        try{
            if (clazz==null){
                return MAPPER.readValue(jsonData, DataVo.class);
            }
            JsonNode jsonNode=MAPPER.readTree(jsonData);
            JsonNode data=jsonNode.get("data");
            Object obj=null;
            if(clazz!=null){
                if(data.isObject()){
                    obj=MAPPER.readValue(data.traverse(),clazz);
                } else if (data.isTextual()) {
                    obj=MAPPER.readValue(data.asText(),clazz);
                }
            }
            return build(jsonNode.get("status").intValue(),jsonNode.get("msg").asText(),obj);
        }catch (Exception e){
            return null;
        }
    }
    //没有object对象的转化
    public static DataVo format(String json){
        try {
            return MAPPER.readValue(json,DataVo.class);
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    //object是集合转化,需要转换的对象是一个list
    public static DataVo formatToList(String jsonData,Class<?> clazz){
        try {
            JsonNode jsonNode=MAPPER.readTree(jsonData);
            JsonNode data=jsonNode.get("data");
            Object obj=null;
            if(data.isArray()&&data.size()>0){
                obj=MAPPER.readValue(data.traverse(),MAPPER.getTypeFactory().constructCollectionType(List.class,clazz));
            }
            return build(jsonNode.get("status").intValue(),jsonNode.get("msg").asText(),obj);
        }catch (Exception e){
            return null;
        }
    }
}
  1. 定义User类
 package com.example.example48.model;


public class User {
    public String name;
    public Integer age;
    public String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", password='" + password + '\'' +
                '}';
    }
}
  1. 处理数据返回
package com.example.example48.controller;

import com.example.example48.entity.DataVo;
import com.example.example48.model.User;
import com.example.example48.utils.JsonResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@RequestMapping("user")
public class Json {
    @RequestMapping("/getUser")
    public DataVo getUserJson(){
        User u=new User();
        u.setName("cn");
        u.setAge(20);
        u.setPassword("cainiao");
        System.out.println(u);
        return JsonResult.ok(u);
    }
}

  1. 测试结果

运行启动类,在浏览器中访问http://localhost:8080/user/getUser,返回结果如下:

结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值