java.io.EOFException:Gson 解析器中第 1 行第 1 列路径 $ 的输入结束

Huy*_*wer 5 java android json gson

我正在使用 Gson 和 Retrofit 解析 JSON 字符串。我有这个 JSON 字符串:

{"message":["Email has already been taken"]}
Run Code Online (Sandbox Code Playgroud)

我仍然收到以下异常,但不知道为什么:

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)
Run Code Online (Sandbox Code Playgroud)

知道如何获取message字段值的人请帮助我。

BaseApiDto.java

{"message":["Email has already been taken"]}
Run Code Online (Sandbox Code Playgroud)

HandErrorUtils.java

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)
Run Code Online (Sandbox Code Playgroud)

更新我分配body.toString()给变量,不知何故它起作用了。

String response = body.string();

BaseApiDto errorDto = adapter.fromJson(response);
Run Code Online (Sandbox Code Playgroud)

Huy*_*wer 2

它成功了,因为我没有打电话body.string()两次。

我分配body.toString()给变量,不知何故它起作用了。

String response = body.string();

BaseApiDto errorDto = adapter.fromJson(response);
Run Code Online (Sandbox Code Playgroud)