首页 > 解决方案 > 使用 Jackson 将 Java 集序列化为 JavaScript 对象

问题描述

我有一套Java:Set<String> mySet = Set.of("a", "b", "c");

Jackson 将其序列化为一个 JavaScript 数组["a", "b", "c"]

但是在 JavaScript 方面,我想检查具有最佳性能并使用语法的值mySet["a"]。因此,我希望将 Java Set 序列化为 JavaScript 对象{"a": true, "b": true, "c": true}

你会怎么做?Jackson 是否有一个我可以使用的现有序列化程序@JsonSerialize

标签: javadictionaryjacksonset

解决方案


从评论:

不,杰克逊没有现有的序列化器

但这应该这样做:

public class SetToObjectSerializer extends JsonSerializer<Set> {
    @Override
    public void serialize(Set set, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        gen.writeStartObject();
        for (Object element : set) {
            gen.writeObjectField(element.toString(), "true");
        }
        gen.writeEndObject();
    }
}

作为替代方案,可以在 Java 端序列化之前或 JavaScript 端反序列化之后调整数据结构。


推荐阅读