首页 > 编程语言 >反序列化时如何将对象展开为列表

反序列化时如何将对象展开为列表

来源:互联网 2026-07-02 08:07:06

利用 @JsonValue 注解,Jackson 可以把一个对象直接"拆"成它内部的列表值,省掉一层嵌套,最终输出像 [ [123, 45.6], [789, 12.3] ] 这样的扁平数组。 Jackson @JsonValue 注解的核心作用 通常情况下,Jackson 在序列化一个 Java

利用 @JsonValue 注解,Jackson 可以把一个对象直接"拆"成它内部的列表值,省掉一层嵌套,最终输出像 [ [123, 45.6], [789, 12.3] ] 这样的扁平数组。

Jackson @JsonValue 注解的核心作用

通常情况下,Jackson 在序列化一个 Java 对象时,默认会把它的所有字段作为键值对输出为一个 JSON 对象。但在某些场景中,我们不希望 DataPoint 被包成 { "dataPoint": [...] } 的形式,而是希望它本身直接等价于内部的二维数值列表——即每个 DataPoint 实例应该被序列化为一个长度为 2 的数组 [long, double],并作为 dataPoint 数组中的元素。

解决方案非常简洁:只需在承载数据的字段或对应的 getter 方法上添加 @JsonValue 注解即可。

长期稳定更新的攒劲资源: >>>点此立即查看<<<

public class DataPoint {
    private final List data;

    public DataPoint(long date, double counts) {
        this.data = List.of(date, counts);
    }

    @JsonValue  // ← 核心注解:标记这个方法是对象转 JSON 时的唯一值表示
    public List getData() {
        return data;
    }
}

使用 @JsonValue 的注意事项: