Notice
Recent Posts
Recent Comments
올해는 머신러닝이다.
Retrofit 사용시 NumberformatException 발생시.. 본문
Retrofit 사용시 NumberformatException 발생시..
간혹 숫자로 변환시 빈값으로 들어오는 경우 뱉는 오류 중 하나가 NumberformatException 이다.
이럴경우 Adapter를 하나 등록하면 된다.
public class EmptyStringToNumberTypeAdapter extends TypeAdapter<Number> {
@Override
public void write(JsonWriter jsonWriter, Number number) throws IOException {
if (number == null) {
jsonWriter.nullValue();
return;
}
jsonWriter.value(number);
}
@Override
public Number read(JsonReader jsonReader) throws IOException {
if (jsonReader.peek() == JsonToken.NULL) {
jsonReader.nextNull();
return null;
}
try {
String value = jsonReader.nextString();
if ("".equals(value)) {
return 0;
}
return Integer.parseInt(value);
} catch (NumberFormatException e) {
throw new JsonSyntaxException(e);
}
}
}
만드는 쪽에서
private static Gson getGson(){
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Integer.class , new EmptyStringToNumberTypeAdapter())
.registerTypeAdapter(int.class, new EmptyStringToNumberTypeAdapter())
.registerTypeAdapter(double.class, new EmptyStringToNumberTypeAdapter())
.registerTypeAdapter(Double.class, new EmptyStringToNumberTypeAdapter());
Gson gson = gsonBuilder.create();
return gson;
}
public static Retrofit initRetrofit() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Variable._SERVER_HOST)
.client(Common.getClient())
.addConverterFactory(GsonConverterFactory.create(getGson()))
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
return retrofit;
}
이상입니다..
'Android > General' 카테고리의 다른 글
Okhttp Logging intercepter 를 보기좋게.. (0) | 2017.03.16 |
---|---|
FLAG_ACTIVITY_CLEAR_TOP 사용시 주의 (0) | 2017.03.15 |
화면 이동 애니메이션 기본 (0) | 2017.02.17 |
안드로이드에서 루팅없이 DB 파일 추출하기 (0) | 2016.12.15 |
android anim 애니메이션 효과 (0) | 2016.01.16 |