新项目调试模式 ✅ 你这个问题我拆解一下:ApiFox 分页返回 VO 中没有数据的字段为什么不展示?
📌 背景
在 ApiFox 里调试接口,返回一个分页查询结果,一般长这样:
{
"code": 200,
"msg": "success",
"data": {
"total": 100,
"list": [
{
"id": 1,
"name": "Tom"
// age 字段没有值 → 不展示
}
]
}
}
你发现:
- 有值的字段正常展示
- VO 里定义了字段,但没有数据的字段,ApiFox 响应里不显示
🔎 为什么会这样?
这和 ApiFox 没有直接关系,而是 你后端序列化规则 的结果。
常见情况:
Jackson 配置(Spring Boot 默认 JSON 序列化框架)
如果配置了
@JsonInclude(JsonInclude.Include.NON_NULL)
,则字段为null
时不会输出。项目全局可能配置了:
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
所以返回结果里 null 字段被省略了。
Fastjson / Gson 配置
- Fastjson 默认也会跳过 null,如果没显式配置
SerializerFeature.WriteMapNullValue
。 - Gson 同理,默认不序列化 null。
- Fastjson 默认也会跳过 null,如果没显式配置
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 数据