当前位置:首页 > 问答 > 正文

SpringBoot 接口开发 controller返回json,controller返回json对象的实现方式与注意事项

🔍 SpringBoot | 接口开发 | Controller返回JSON

实现方式

  • 注解驱动

    • @RestController:自动将方法返回值转为JSON(等价于@Controller + @ResponseBody)。
    • @ResponseBody:单独标注方法时,强制返回JSON。
  • 直接返回对象 🚀

    @GetMapping("/user")
    public User getUser() {
        return new User("Alice", 25); // 自动序列化为JSON
    }
  • 返回Map或集合 📦

    SpringBoot 接口开发 controller返回json,controller返回json对象的实现方式与注意事项

    @GetMapping("/list")
    public List<String> getList() {
        return Arrays.asList("A", "B", "C");
    }
  • 手动构建JSON 🛠️

    • 使用ResponseEntity自定义状态码和响应体:
      @GetMapping("/custom")
      public ResponseEntity<Map<String, Object>> customJson() {
        Map<String, Object> map = new HashMap<>();
        map.put("code", 200);
        map.put("data", "Success");
        return ResponseEntity.ok(map);
      }

注意事项

  • 序列化规则 ⚠️

    • 确保POJO有无参构造方法Getter/Setter,否则JSON序列化失败。
    • 使用@JsonIgnore忽略敏感字段。
  • 日期格式化 📅

    SpringBoot 接口开发 controller返回json,controller返回json对象的实现方式与注意事项

    • 全局配置(application.properties):
      spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
      spring.jackson.time-zone=GMT+8
    • 局部注解:@JsonFormat(pattern="yyyy-MM-dd")
  • 统一响应体

    • 封装通用结构(如Result<T>),避免接口风格混乱。
      public class Result<T> {
        private int code;
        private T data;
        // 构造方法 + Getter/Setter
      }
  • 异常处理

    • 使用@ExceptionHandler捕获异常并返回JSON错误信息。
  • 性能优化 🚄

    SpringBoot 接口开发 controller返回json,controller返回json对象的实现方式与注意事项

    • 大JSON数据考虑分页流式传输
    • 启用Gzip压缩:server.compression.enabled=true

常见问题

  • 循环引用 🔄
    • 使用@JsonManagedReference@JsonBackReference解决双向关联。
  • 空值处理 🕳️
    • @JsonInclude(JsonInclude.Include.NON_NULL)忽略空字段。

📌 :SpringBoot返回JSON只需专注业务逻辑,但需注意序列化规则、格式统一与性能!

发表评论