我收到类似的错误


  retrofit.RetrofitError:com.google.gson.JsonSyntaxException:com.google.gson.stream.MalformedJsonException:使用JsonReader.setLenient(true)在第1行第7列的路径接受格式错误的JSON $


我试过这个MalformedJsonException with Retrofit API? 1的1个答案,我正在使用翻新版1.8,该怎么办?

我的Java代码:

RetroHelper

public static RestAdapter getAdapter(Context ctx, String serverUrl) {
        mContext=ctx;
        RestAdapter restAdapter = new RestAdapter.Builder()
                .setEndpoint(StringConstants.BASE_CLASSES_URL+serverUrl)
                .setLogLevel(RestAdapter.LogLevel.FULL).setLog(new RestAdapter.Log() {
                    @Override
                    public void log(String msg) {
                        Log.i("Retro Helper", msg);
                    }
                })
                .build();


JSON回应

{
    "status": "Success",
    "data": null,
    "message": "Successfully get the slot lists",
    "statusCode": 200
}


其他代码

public ServiceOperations getBaseClassService(Context ctx, String url) {
            return new RetroHelper().getAdapter(ctx, url).create(ServiceOperations.class);
        }



     @GET("/schduleLists")
        void getDoctorSchedule(@Query("doctorid") int id, Callback<JsonObject> callback);

 mUtil.getBaseClassService(getActivity(), "").getDoctorSchedule(mUserId,new Callback<JsonObject>() {
                @Override
                public void success(JsonObject jsonObject, Response response) {
                    if (jsonObject.get(StringConstants.STATUS).getAsString().equalsIgnoreCase("Success")) {// this if condition is casued error!
                        mUtil.dismissDialog();
                        JsonArray jsonArray =jsonObject.get("data").getAsJsonArray();

最佳答案

我怀疑result1的末尾有一些字符,您无法在调试器中看到其后跟}字符。 result1和result2的长度是多少?我将注意到您引用的result2有169个字符。

当对象末尾有多余的非空格字符时,GSON会抛出该特定错误,并且它非常狭窄地定义了空格(如JSON规范所做的那样)-仅\ t,\ n,\ r和空格计数为空格。特别要注意,结尾的NUL(\ 0)字符不算作空格,并且会导致此错误。

如果您不容易弄清到底是什么导致多余的字符并消除它们,另一种选择是告诉GSON以宽大的模式进行解析:

Gson gson = new Gson();
JsonReader reader = new JsonReader(new StringReader(result1));
reader.setLenient(true);
Userinfo userinfo1 = gson.fromJson(reader, Userinfo.class);

关于java - 改造设置改造中的宽松误差:1.8.0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40082665/

10-13 06:31