Android/General
Retrofit 사용시 NumberformatException 발생시..
행복한 수지아빠
2017. 3. 2. 14:11
반응형
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;
}
이상입니다..
반응형