模拟返回数据到前台页面常用的方法,自定义json返回类

100 阅读1分钟

方法一

  • 返回json数据需要加载json依赖

pom依赖

<!--        json解析工具包-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.13.3</version>
        </dependency>
  • 引用注解:
@RestController  // 等同controller + resposeBody ,表示本控制器方法都返回json,有这种方法数据直接输出到页面上,不会走视图解析器
@RestController   
@RequestMapping("json1")
    public List<Users> json1() {
        List<Users> list = new ArrayList<>();
        list.add(new Users(101,"123","3123"));
        list.add(new Users(102,"222","3123"));
        list.add(new Users(103,"333","3123"));
        list.add(new Users(104,"444","3123"));
        return list;
    }

方法二

  • 方法boolean类型,和String类型
@RestController       
@RequestMapping("json2")
    public boolean json2() {
        return true;
    }

如果返回json是中文,设置字符编码

   @RequestMapping(value = "json3" ,produces = "text/plain;charset=utf-8")
    public String json3() {
       return "葫芦娃";
   }

方法三

  • 使用ResponseEntity<>方法,自动转json,不需要手动声明注解,可以带状态码也可不带
 @RequestMapping("json4")
    public ResponseEntity<Users> json4() {
       Users u1 = new Users(111,"111","111");
       Users u2 = new Users(222,"222","222");
//        返回200状态码并带数据
//       return ResponseEntity.ok(u1);//       只返回状态,不带数据
//       return ResponseEntity.ok().build();//       指定状态码,带数据
       return ResponseEntity.status(HttpStatus.NOT_FOUND).body(u1);
    }

方式四

  • 传一个指定对象
    @RequestMapping("json5")
    public void json5(@RequestBody Users u) {
        System.out.println("获取数据"+u);
    }

方式五:统一json返回类

  • 创建一个统一json返回类
  • 无参构造没意义,可以自定义构造函数
package com.zking.util;
​
import lombok.Data;
​
@Data
public class Results {
    private int code;// 状态码
    private String msg; //消息
    private  Object data; // 数据
​
    public Results(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }
​
    public Results(int code, String msg, Object data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }
    public static Results ok() {
        return new Results(200,"success");
    }
    public static Results ok(String msg) {
        return new Results(200,msg);
    }
    public static Results ok(String msg,Object data) {
        return new Results(200,msg,data);
    }
    public static Results err( String msg) {
        return new Results(500,msg);
    }
}
  • 自定义操作成功
 @RequestMapping("json6")
    public Results json6() {
        List<Users> list = new ArrayList<>();
        list.add(new Users(101,"123","3123"));
        list.add(new Users(102,"222","3123"));
        list.add(new Users(103,"333","3123"));
        list.add(new Users(104,"444","3123"));
        return Results.ok("操作成功!",list);
    }

自定义返回状态.png