Java com.google.gson.JSON异常:JSON文档在Android改造中未完全使用

Java com.google.gson.JSON异常:JSON文档在Android改造中未完全使用,java,android,json,retrofit2,slim,Java,Android,Json,Retrofit2,Slim,关于Stackoverflow中的“JSON文档未被完全使用”已经有几个问题,但没有公认的答案。链接如下 在我的应用程序中,我正在接收用户的电子邮件。使用我的API,我检查给定的电子邮件是否存在于数据库中。如果存在,我将向该电子邮件发送一个代码。我使用localhost作为服务器,并使用Slim作为API。我觉得我的API还可以。我通过邮递员查过了。我在帖子中分享的Json响应来自Postman。实际上我正在学习改装。请帮忙。提前谢谢 client.java package com.exam

关于Stackoverflow中的“JSON文档未被完全使用”已经有几个问题,但没有公认的答案。链接如下

在我的应用程序中,我正在接收用户的电子邮件。使用我的API,我检查给定的电子邮件是否存在于数据库中。如果存在,我将向该电子邮件发送一个代码。我使用localhost作为服务器,并使用Slim作为API。我觉得我的API还可以。我通过邮递员查过了。我在帖子中分享的Json响应来自Postman。实际上我正在学习改装。请帮忙。提前谢谢

client.java

package com.example.royta.retrofitdemo.APIs;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class RetrofitClient {
    private static final String BASE_URL = "http://aa561878.ngrok.io/MyApi/public/";
    private static RetrofitClient retrofitClient;
    private Retrofit retrofit;

    private static Gson gson = new GsonBuilder()
            .setLenient()
            .create();

    private RetrofitClient() {

        retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build();
    }

    public static synchronized RetrofitClient getInstance() {
        if(retrofitClient == null) {
            retrofitClient = new RetrofitClient();
        }
        return retrofitClient;
    }

    public Api getApi() {
        return retrofit.create(Api.class);
    }
}
package com.example.royta.retrofitdemo.APIs;

import com.example.royta.retrofitdemo.ModelClass.UserExist;
import retrofit2.Call;
import retrofit2.http.GET;

public interface Api {

    @GET("finduser")
    Call<UserExist> isUserExist(
            @Query("email") String email

    );
}
Json

{
    "isSend": true,
    "code": 117482,
    "email": true
}
UserExist.java(Pojo)

Api.java

package com.example.royta.retrofitdemo.APIs;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class RetrofitClient {
    private static final String BASE_URL = "http://aa561878.ngrok.io/MyApi/public/";
    private static RetrofitClient retrofitClient;
    private Retrofit retrofit;

    private static Gson gson = new GsonBuilder()
            .setLenient()
            .create();

    private RetrofitClient() {

        retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build();
    }

    public static synchronized RetrofitClient getInstance() {
        if(retrofitClient == null) {
            retrofitClient = new RetrofitClient();
        }
        return retrofitClient;
    }

    public Api getApi() {
        return retrofit.create(Api.class);
    }
}
package com.example.royta.retrofitdemo.APIs;

import com.example.royta.retrofitdemo.ModelClass.UserExist;
import retrofit2.Call;
import retrofit2.http.GET;

public interface Api {

    @GET("finduser")
    Call<UserExist> isUserExist(
            @Query("email") String email

    );
}
package com.example.royta.demo.api;
导入com.example.royta.demo.ModelClass.UserExist;
2.电话;;
导入文件2.http.GET;
公共接口Api{
@获取(“finduser”)
调用isUserExist(
@查询(“电子邮件”)字符串电子邮件
);
}

以下是调用您应该将字段按与json相同的顺序放入模型类中

@SerializedName("isSend")
private boolean isSend;
@SerializedName("code")
private int code;
@SerializedName("email")
private boolean email;

当我收到这个错误消息“JSON文档未完全使用”时,我遇到的问题仅仅是JSON字符串末尾有多余的文本


在我的例子中,我手动将文本添加到有效JSON字符串的末尾,以“测试”错误处理,并在周五重试逻辑,然后在周一忘记了我添加了这个临时代码

这似乎不太可能解决任何问题——除非你们有一个来自Square的参考,表明这是必要的。正如你们所说的,我已经检查过了。仍在获取com.google.gson.JSON异常:JSON文档未被完全使用。我将添加一个日志拦截器,以确保返回的确实是JSON。此外,您还可以简化catch块:
Log.e(“ROYs”,“onFailure方法”,t)
新建HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)
将此拦截器添加到okhttp客户端,并查看服务器响应时logcat为您提供了什么。这可能是web服务器给出的格式错误的json响应。与我们分享反应,以便更好地了解哪里出了问题?