为什么ApiFox的分页查询的返回Vo的数据没有全部展示? 只展示了返回有数据的?没有数据的为什么不展示?

发布于:2025-09-05 ⋅ 阅读:(16) ⋅ 点赞:(0)

新项目调试模式 ✅ 你这个问题我拆解一下:ApiFox 分页返回 VO 中没有数据的字段为什么不展示?


📌 背景

在 ApiFox 里调试接口,返回一个分页查询结果,一般长这样:

{
  "code": 200,
  "msg": "success",
  "data": {
    "total": 100,
    "list": [
      {
        "id": 1,
        "name": "Tom"
        // age 字段没有值 → 不展示
      }
    ]
  }
}

你发现:

  • 有值的字段正常展示
  • VO 里定义了字段,但没有数据的字段,ApiFox 响应里不显示

🔎 为什么会这样?

这和 ApiFox 没有直接关系,而是 你后端序列化规则 的结果。

常见情况:

  1. Jackson 配置(Spring Boot 默认 JSON 序列化框架)

    • 如果配置了 @JsonInclude(JsonInclude.Include.NON_NULL),则字段为 null 时不会输出。

    • 项目全局可能配置了:

      objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
      
    • 所以返回结果里 null 字段被省略了。

  2. Fastjson / Gson 配置

    • Fastjson 默认也会跳过 null,如果没显式配置 SerializerFeature.WriteMapNullValue
    • Gson 同理,默认不序列化 null。
  3. VO 初始化问题

    • 如果你的 VO 字段没有被赋值(保持 null),自然就不会输出。

✅ 解决方案

方案一:保留 null 字段

如果希望 ApiFox 里看到所有字段(即使为 null),需要修改 JSON 序列化配置:

Jackson

@JsonInclude(JsonInclude.Include.ALWAYS)
public class PageVO {
    private String name;
    private Integer age;
}

或全局配置:

objectMapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);

Fastjson

JSON.toJSONString(obj, SerializerFeature.WriteMapNullValue);

方案二:ApiFox Mock 定义

如果只是为了前端/测试能看到完整字段,可以在 ApiFox 接口文档里配置 响应示例(Response Example)Schema,手动补全字段,让字段始终展示。


📌 总结

  • ApiFox 只是展示后端返回的 JSON
  • 字段没值不展示,是后端 JSON 序列化配置决定的
  • 想要“所有 VO 字段都展示”,要么改后端序列化配置输出 null,要么在 ApiFox 接口文档里补全 Mock 数据


网站公告

今日签到

点亮在社区的每一天
去签到