Spring返回JSON时空数组属性缺失,如何确保该属性始终显示?
解决Spring JSON响应中空集合被排除的问题
要让items属性始终出现在JSON响应中(有数据返回数组,无数据返回[]),可以通过以下几种方式处理:
1. 单个字段强制序列化
在items字段上添加@JsonInclude(JsonInclude.Include.ALWAYS)注解,强制Jackson无论该集合是否为空都进行序列化:
public class MyResponse { private String name; @JsonInclude(JsonInclude.Include.ALWAYS) private List<String> items = new ArrayList<>(); // 其他属性、getter和setter方法 }
2. 全局配置统一处理
如果希望所有空集合都默认序列化为[],可以在Spring Boot的配置文件中设置:
- application.properties:
# 确保空数组被序列化,同时排除null字段(可选) spring.jackson.serialization.write-empty-json-arrays=true spring.jackson.default-property-inclusion=NON_NULL
- application.yml:
spring: jackson: serialization: write-empty-json-arrays: true default-property-inclusion: NON_NULL
这个配置会让所有空集合输出为[],同时不返回值为null的字段,兼顾空集合显示和响应简洁性。
3. 确保getter方法返回非空集合
如果items有可能被设置为null,可以在getter方法中做兜底处理,保证返回空集合而非null:
public List<String> getItems() { if (items == null) { items = new ArrayList<>(); } return items; }
这样即使items被意外设为null,序列化时也会输出[]。
内容的提问来源于stack exchange,提问作者user1555190
相关产品推荐
相关产品推荐

