控制台输出方式,推荐优先用 JSON 格式化打印,能看到最完整清晰的结构。
补充实用技巧
优先用 Spring 注入的 ObjectMapper
自己 new ObjectMapper() 是默认配置,而 Spring Boot 容器里已经自动配置好了一个全局 ObjectMapper(统一处理了日期格式、空值规则等),直接 @Autowired 注入使用,输出格式和接口返回完全一致,效果更好。
本身是 JSON 字符串不用再转
如果你拿到的已经是一个 JSON 格式的字符串,直接 System.out.println(jsonStr) 即可,不要再调用 writeValueAsString,否则会把引号转义,反而无法阅读。
序列化失败的兜底方案
如果遇到对象转 JSON 报错,临时调试可以直接用 System.out.println(对象),依赖类的 toString() 方法查看内容;最直观的方式还是打 Debug 断点,在变量面板里查看完整结构。
方式1:JSON 格式化打印(最直观,推荐)
把 page 对象转成带缩进的 JSON 字符串输出,结构和接口返回完全一致,不受实体类是否重写 toString 影响,所有字段和数据都能完整看到。
SpringBoot 默认集成了 Jackson,直接用即可:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
@GetMapping("/list")
public Result<PageVO<Employees>> getEmployeeList(EmpQueryDTO empQueryDTO) throws Exception {
IPage<Employees> page = empService.getEmpList(empQueryDTO);
// JSON 格式化打印
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(SerializationFeature.INDENT_OUTPUT); // 开启缩进换行
String pageJson = objectMapper.writeValueAsString(page);
System.out.println("分页对象完整结构:\\n" + pageJson);
// 如果只想单独看某个字段,也可以直接调用方法打印:
System.out.println("总条数:" + page.getTotal());
System.out.println("当前页数据:" + page.getRecords());
System.out.println("总页数:" + page.getPages());
return Result.success(PageVO.restPage(page));
}
控制台输出效果就是标准的 JSON 格式,和之前给你展示的结构示例完全一样。
方式2:日志打印(企业项目规范写法)
正式项目不推荐用 System.out,一般用 SLF4J 日志框架打印,方便级别控制和后续排查。
import lombok.extern.slf4j.Slf4j;
import com.fasterxml.jackson.databind.ObjectMapper;
@RestController
@Slf4j
public class EmployeeController {
@Autowired
private EmployeesService empService;
@Autowired
private ObjectMapper objectMapper; "Spring自动注入,不用自己new"
@GetMapping("/list")
public Result<PageVO<Employees>> getEmployeeList(EmpQueryDTO empQueryDTO) throws Exception {
IPage<Employees> page = empService.getEmpList(empQueryDTO);
// 日志格式化打印
log.info("分页查询结果:\\n{}",
objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(page));
log.info("总条数" + page.getTotal());
log.info("总页数" + page.getPages());
log.info("当前页" + page.getCurrent());
return Result.success(PageVO.restPage(page));
}
}


