You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Rest Assured时如何通过POJO构造JSON中的空数组

空数组序列化问题解决方案

问题根因

你当前代码存在两个核心问题:

  1. 类型不匹配:Key是List<String>类型,直接赋值字符串""会触发序列化框架的隐式类型转换,把字符串转为单元素列表,最终得到[""]的错误结果
  2. 空值处理逻辑不符:赋值为null时,序列化框架默认会把字段输出为null或者直接省略,不会自动转为空数组

具体实现方案

以下是常用Java JSON序列化框架的适配方案:

方案1:Jackson(Spring生态默认序列化框架)

方式一:直接初始化空集合(推荐,改造成本最低)

直接在POJO定义或者赋值时给Key赋值空集合,不用额外配置:

public class Sample {
    // 初始化时直接赋值空集合,避免null值
    private List<String> Key = new ArrayList<>();
}

// 测试代码
Sample s = new Sample();
// 不需要给Key额外赋值,保持默认空集合即可
// 如果需要手动设置为空,可显式赋值:s.setKey(Collections.emptyList());

序列化后自动得到"Key": []的预期结果。

方式二:自定义序列化器适配null转空数组

如果需要兼容Key为null的业务场景,不用修改赋值逻辑,加序列化注解即可:

  1. 先定义空数组序列化器:
public class NullListToEmptyArraySerializer extends JsonSerializer<List<?>> {
    @Override
    public void serialize(List<?> value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        if (value == null) {
            // 空值直接输出空数组
            gen.writeStartArray();
            gen.writeEndArray();
            return;
        }
        gen.writeObject(value);
    }
}
  1. 在POJO字段上标注注解:
public class Sample {
    @JsonSerialize(nullsUsing = NullListToEmptyArraySerializer.class)
    private List<String> Key;
}

方案2:Fastjson

方式一:直接初始化空集合

和Jackson的方式一逻辑一致,给Key赋值new ArrayList<>()或者Collections.emptyList()即可得到预期结果。

方式二:全局配置null列表转空数组

如果要全局适配所有List类型的null值序列化为空数组,配置序列化规则即可:

SerializeConfig serializeConfig = new SerializeConfig();
serializeConfig.put(List.class, (ObjectSerializer) (serializer, object, fieldName, fieldType, features) -> {
    if (object == null) {
        serializer.out.writeStartArray();
        serializer.out.writeEndArray();
        return;
    }
    serializer.write(object);
});
// 序列化时传入配置
String resultJson = JSON.toJSONString(sample, serializeConfig);

注意事项

需要确认序列化框架开启了「输出空集合」的特性:

  • Jackson需要开启SerializationFeature.WRITE_EMPTY_JSON_ARRAYS(默认已开启)
  • Fastjson可配置SerializerFeature.WriteNullListAsEmpty实现null列表直接输出空数组

内容的提问来源于stack exchange,提问作者Karthick sankar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:45:04