Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- bitbucket
- react-native
- 안드로이드 스튜디오
- 설정
- 디버깅
- gradle
- 개발환경설정
- EC2
- 뒤로가기 안됨
- WPF
- 데이터바인딩
- sourcetree
- AWS
- Android
- Git
- 빌드 오류
- 안됨
- aPK
- VisualStudio
- 리액트
- flutter
- react
- 안드로이드
- git인증
- Invalid credentials
- 예제
- not working
- Kotlin
- 리액트 네이티브
- 인증문제해결
Archives
- Today
- Total
물에 살고싶은 개발자
Gson 멈춤 또는 무한루프문제 본문
안드로이드에서 쉐어드를 편하게 쓰기 위해 객체를 json으로 파싱해주는 gson 라이브러리가 있다.
문제는 이녀석을 쓰다보면 멀쩡히 잘 되던놈이 익셉션도 없이 먹통이 되서 어디선가 무한루프를 도는듯한 반응을 보여줄때가 있는데
스택오버플로우를 뒤져보니 해결법이 나왓다.
(원인은 아직 나도 모르겠다)
본래 gson에 대해 검색해보면 사용법으로
Gson gson = new Gson();
String json = gson.toJson(tempItem);
이렇게 두줄이 대표적으로 나오게 된다.
처음에는 아무 문제없이 잘 쓸수도있는데
위에 써둔것처럼 문제가 생길 경우가 있다.
이때는 클래스를 하나 생성해주자
public class Exclude implements ExclusionStrategy{
@Override
public boolean shouldSkipClass(Class<?> arg0) {
return false;
}
@Override
public boolean shouldSkipField(FieldAttributes field) {
SerializedName ns = field.getAnnotation(SerializedName.class);
if(ns != null)
return false;
return true;
}
}
스택오버플로우에있는거 그대로 복붙했다.
따로 커스텀할 필요가 없기때문(코드분석을 안해도 아무 지장이 없었기에 안했음)
위 클래스를 생성했으면 gson 오브젝트를 만드는곳을 살짝 바꿔주자
Exclude ex = new Exclude();
Gson gson = new GsonBuilder().addDeserializationExclusionStrategy(ex).addSerializationExclusionStrategy(ex).create();
위에 new Gson()을 위처럼 바꿔주면 (마치 무한루프에 걸린거같은)문제는 해결된다.
해결도 됏고 따로 문제가 생기지않아 분석은 안했으니 분석하고싶으신분들은 하시길..
끗
Comments