2013-07-22 3 views
2

나는 Gson을 사용하여 Object 데이터를 저장하는 안드로이드 애플리케이션을 만들고 있습니다. GSON의 toJson() 방법을 사용하는 경우 Gson을 사용할 때 순환 참조를 얻는 방법?

private long id; 
private String goalName; 
private boolean isMainGoal; 
private Goal upperLevelGoal; 
private Goal mainGoal; 
private ArrayList<Goal> subGoals; 
private int goalLevel; 
private String textViewSubGoalLine; 
private ArrayList<UrlComplex> sitesWithinGoal; 

, 나는이 StackOverflowError를 얻을 : 나는 다음과 같은 속성을 가지고있는 사용하고 유형 Goal 있습니다. 내가 읽은 바로는 Gson이 순환 참조를 처리 할 수 ​​없기 때문입니다. 즉, 내 Goal 또는 ArrayList<Goal> 속성에 toJson()을 수행 할 수 없습니다.

나는이 문제를 해결하기 위해 어떻게 든 TypeToken을 사용할 수 있음을 알고 있습니다. (gson.toJson() throws StackOverflowError) 그러나 설명서 (http://google-gson.googlecode.com/svn/tags/1.1.1/docs/javadocs/com/google/gson/reflect/TypeToken.html)를 읽었으므로 어떻게 사용했는지 이해할 수 없습니다.

Gson을 통해 JSON에 정보를 저장할 수 있도록 순환 참조를 사용하는 방법을 아는 사람이 있습니까?

답변

0

TypeToken은 도움이되지 않습니다. Gson에서 순환 참조를 처리하려면 TypeAdapterFactory이 필요하지만 간단하지는 않습니다.

더 좋은 방법은 (하지만 실제로이 기능을 사용하지 않음) 잭슨와 JSON을 구문 분석 아마 : http://wiki.fasterxml.com/JacksonFeatureBiDirReferences