在 spring boot 中,rest 接口返回 json 数据最直接的方式是在控制器方法上添加 @responsebody 注解,或者使用组合注解 @restcontroller。当方法返回一个对象时,spring mvc 会自动调用 jackson 库将该对象序列化为 json 字符串并写入 http 响应体中。

如何配置自定义的 JSON 序列化规则
如果需要控制 JSON 输出的格式,例如忽略空字段或修改日期格式,可以通过配置 ObjectMapper 实例来实现。这通常涉及创建一个配置类,注入 ObjectMapper 并设置特定的属性,如 SerializationFeature.WRITE_NULL_MAP_VALUES 或注册自定义模块。

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.fasterxml.jackson.databind.SerializationFeature;
@Configuration
public class JsonConfig {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.disable(SerializationFeature.WRITE_NULL_MAP_VALUES);
return mapper;
}
}如何处理 REST 接口中的异常与错误响应
当业务逻辑出现错误或参数校验失败时,直接抛出异常会导致默认的 500 错误页面。为了返回结构化的 JSON 错误信息,可以使用 @ControllerAdvice 结合 @ExceptionHandler 来统一捕获异常,并返回封装好的错误对象。这样客户端可以解析统一的 JSON 结构来获取错误详情。

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(IllegalArgumentException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ErrorResponse handleIllegalArgument(IllegalArgumentException ex) {
return new ErrorResponse("400", ex.getMessage());
}
}
class ErrorResponse {
String code;
String message;
// constructor, getters, setters
}基于具体输入条件验证 JSON 返回结构的完整性
在实际开发中,需要确保特定输入条件下返回的 JSON 结构符合预期。例如,当查询用户信息时,如果用户不存在,应返回特定的状态码和提示信息,而不是 null 或空对象。通过单元测试模拟不同输入,可以验证控制器是否正确处理了这些边界情况,并确保返回的 JSON 包含所有必要的字段。


















