java.io.EOFException: End of input at line 1 column 1 path $ in Gson parser
10,080
It worked because I didn't call body.string()
twice.
I assign body.toString()
to variable, somehow it worked.
String response = body.string();
BaseApiDto errorDto = adapter.fromJson(response);
Author by
Huy Tower
Huy Tower --- Flutter Developer | Senior Android Developer --- Skype: huytower Location : Ho Chi Minh, Viet Nam
Updated on June 19, 2022Comments
-
Huy Tower almost 2 years
I'm parsing a JSON string by using Gson and Retrofit. I have this JSON string:
{"message":["Email has already been taken"]}
I get the below exception still and don't know why:
java.io.EOFException: End of input at line 1 column 1 path $ at com.google.gson.stream.JsonReader.nextNonWhitespace(JsonReader.java:1393) at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:549) at com.google.gson.stream.JsonReader.peek(JsonReader.java:425) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:205) at com.google.gson.TypeAdapter.fromJson(TypeAdapter.java:260) at com.google.gson.TypeAdapter.fromJson(TypeAdapter.java:273)
People who know how to get the value of
message
field please help me.BaseApiDto.java
public class BaseApiDto { @SerializedName("message") public String[] message; public String getError() { return message[0]; } }
HandErrorUtils.java
public static void handleError(FragmentActivity activity, Throwable e) { String msg = null; if(e instanceof HttpException){ // Error message in json Gson gson = new Gson(); TypeAdapter<BaseApiDto> adapter = gson.getAdapter(BaseApiDto.class); ResponseBody body = ((HttpException) e).response().errorBody(); // Status code HttpException httpException = (HttpException) e; int statusCode = httpException.code(); if (statusCode == 500) { showErrorDialog(activity, activity.getString(R.string.dialog_msg_error_401), true); } else if (statusCode == 401) { showErrorDialog(activity, activity.getString(R.string.dialog_msg_error_401), true); } else { try { Timber.w("body.string() " + body.string()); // TODO : EXCEPTION HAPPEN IN HERE BaseApiDto errorDto = adapter.fromJson(body.string()); msg = errorDto.getError(); Timber.w("msg " + msg); } catch (Exception ex) { // TODO : EXCEPTION HAPPEN IN HERE ex.printStackTrace(); } showErrorDialog(activity, msg, false); } } }
UPDATE I assign
body.toString()
to variable, somehow it worked.String response = body.string(); BaseApiDto errorDto = adapter.fromJson(response);