Serialization 使用Jackson(JSON)序列化递归类

Serialization 使用Jackson(JSON)序列化递归类,serialization,jackson,stack-overflow,recursive-datastructures,Serialization,Jackson,Stack Overflow,Recursive Datastructures,我定义了一个哈希映射树,如下所示: public class HashTree<K, V> extends HashMap<K, HashTree<K, V>> { private static final long serialVersionUID = 1L; boolean isLeaf = true; private HashMap<K, V> value = new HashMap<K, V>();

我定义了一个哈希映射树,如下所示:

public class HashTree<K, V> extends HashMap<K, HashTree<K, V>> {

    private static final long serialVersionUID = 1L;
    boolean isLeaf = true;
    private HashMap<K, V> value = new HashMap<K, V>();

    public HashMap<K, V> getValues() {
        return value;
    }

    public void setValues(HashMap<K, V> value) {
        this.value = value;
    }

    public void putValue(K key, V value) {
        this.value.put(key, value);
    }

    public void removeValue(K key) {
        this.value.remove(key);
    }

    public void clearValues() {
        this.value.clear();
    }

}
我已经尝试将序列化与此连接起来,当遇到HashTree时,它应该只返回字符串“123”

public class HashTreeSerializer<K,V> extends StdSerializer<HashTree<K,V>> {

    public HashTreeSerializer() {
        super(HashTree.class, false);
    }

    @Override
    public void serialize(HashTree<K, V> tree, JsonGenerator json,
            SerializerProvider provider) throws IOException,
            JsonGenerationException {
        json.writeString("123");
    }

}
公共类HashTreeSerializer扩展了StdSerializer{
公共HashTreeSerializer(){
super(HashTree.class,false);
}
@凌驾
public void序列化(HashTree树、JsonGenerator json、,
SerializerProvider提供程序)引发IOException,
JsonGenerationException{
json.writeString(“123”);
}
}

我甚至将HashTree扩展到StringHashTree以删除这些泛型类型,但仍然会出现堆栈溢出。有什么想法吗?

这是一个bug;类型解析器应该能够将其解析为可接受的无变量类型。

为此,我决定使用内部递归数据类型实现它。
public class HashTreeSerializer<K,V> extends StdSerializer<HashTree<K,V>> {

    public HashTreeSerializer() {
        super(HashTree.class, false);
    }

    @Override
    public void serialize(HashTree<K, V> tree, JsonGenerator json,
            SerializerProvider provider) throws IOException,
            JsonGenerationException {
        json.writeString("123");
    }

}