我想將樹形結構中的數據表示爲java對象,然後我想將其轉換爲JSON對象。在將hashmap轉換爲JSON對象時從Gson獲取stackoverflowerror
隨着計算器項目的幫助:
Convert java arrayList of Parent/child relation into tree?
我有以下主要功能和 「雙」 列表中包含一對:孩子和家長
ArrayList<Pair> list= new ArrayList<>();
list.add(new Pair("6", "4"));
list.add(new Pair("5", "4"));
list.add(new Pair("4", "3"));
list.add(new Pair("2", "3"));
list.add(new Pair("3", "null"));
Map<String, Node> o_map= new HashMap<>();
for (Pair l: list) {
Node parent = o_map.getOrDefault(l.getParentId(), new Node(l.getParentId()));
Node child = o_map.getOrDefault(l.getChildId(), new Node(l.getChildId()));
parent.children.add(child);
child.parent = parent;
o_map.put(parent.id, parent);
o_map.put(child.id, child);
}
Gson gs = new Gson();
System.out.println(gs.toJson(o_map));
}
然而此代碼返回:
Exception in thread "main" java.lang.StackOverflowError
at java.io.StringWriter.write(StringWriter.java:112)
at com.google.gson.stream.JsonWriter.string(JsonWriter.java:576)
at com.google.gson.stream.JsonWriter.writeDeferredName(JsonWriter.java:402)
at com.google.gson.stream.JsonWriter.beginArray(JsonWriter.java:287)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:95)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:61)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:112)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:239)
at com.google.gson.Gson$FutureTypeAdapter.write(Gson.java:968)
錯誤。
我不明白爲什麼它會返回這樣的錯誤。 可能是什麼原因? 非常感謝您提前。
我需要做的是將hashmap>轉換爲json對象。 –
nenana
你不應該寫這樣的'ArrayList list = new ArrayList ();' –
Mark
我需要在json中有樹結構。爲此,我需要將hashmap轉換爲json。我嘗試了另一種方法,爲json寫了一個雙列表,但結果並不是我所期待的。 – nenana