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");
}
}