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