트리 구조의 데이터를 자바 객체로 나타내려고하고 JSON 객체로 변환하려고합니다. 유래 항목의 도움으로해시 맵을 JSON 객체로 변환하는 동안 Gson에서 stackoverflowerror 받기
는 :
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));
}
그러나 아동과 부모 :
Convert java arrayList of Parent/child relation into tree?
hashmap to JSON using GSON 내가 주요 기능 및 "쌍"목록 아래에 있었다
는 쌍을 포함 이 코드는 다음을 반환합니다.
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)
오류.
왜 그런 오류가 반환되는지 알 수 없습니다. 그 이유는 무엇일까요? 미리 감사드립니다.
해시 맵>을 json 개체로 변환해야합니다. –
nenana
이렇게 쓰면 안됩니다.'ArrayList list = new ArrayList (); ' –
Mark
json에 트리 구조가 있어야합니다. 그렇게하기 위해 hashmap을 json으로 변환해야합니다. 나는 json에게 한 쌍의리스트를 쓰는 다른 대안을 시도했지만 결과는 내가 찾던 것이 아니었다. – nenana