Android OnFailure()方法引发异常,该异常应为BEGIN_数组,但在第1行第1列路径处为字符串$

Android OnFailure()方法引发异常,该异常应为BEGIN_数组,但在第1行第1列路径处为字符串$,android,json,retrofit2,gson,Android,Json,Retrofit2,Gson,onFailure in Reformation正在引发此异常“应为BEGIN_数组,但在第1行第1列路径$处为字符串”,如果我从gson转换器中删除setLinent(true),则同一行第1列第1会引发另一个异常“格式错误的json”,这在之前是突然发生的,它工作正常,我很难分析是什么改变导致了这个问题,有人能看看这个并帮我解决吗 我有来自服务器的Json响应: [{ "disposal_type_category": { "category_entry_total"

onFailure in Reformation正在引发此异常“应为BEGIN_数组,但在第1行第1列路径$处为字符串”,如果我从gson转换器中删除setLinent(true),则同一行第1列第1会引发另一个异常“格式错误的json”,这在之前是突然发生的,它工作正常,我很难分析是什么改变导致了这个问题,有人能看看这个并帮我解决吗

我有来自服务器的Json响应:

[{
    "disposal_type_category": {
        "category_entry_total": "21"
    },
    "disposal_types": [{
            "ID": "78",
            "entries": [{
                    "ID": 2584,
                    "entry_tally": "1"
                },
                {
                    "ID": 2578,
                    "entry_tally": "1"
                }
            ]
        },
        {
            "ID": "1323",
            "entries": [{
                    "ID": 2583,
                    "entry_tally": "1"
                },
                {
                    "ID": 2579,
                    "entry_tally": "1"
                }
            ]
        }
    ]
},
{
    "disposal_type_category": {
        "category_entry_total": "25.2"
    },
    "disposal_types": [{
            "ID": "80",
            "entries": [{
                    "ID": 2583,
                    "entry_tally": "1"
                },
                {
                    "ID": 2579,
                    "entry_tally": "1"
                }

            ]
        },
        {
            "ID": "84",
            "entries": [{
                    "ID": 2583,
                    "entry_tally": "1"
                },
                {
                    "ID": 2579,
                    "entry_tally": "1"
                }

            ]
        }
    ]
}]
这是我的改装代码:

ApiInterface apiService =
            ApiClient.getClient().create(ApiInterface.class);
    String token = prefs.getString("token", "No name defined");//"No name defined" is the default value.

    Call<List<Disposal>> callm = apiService.getCollection(token);
    callm.enqueue(new Callback<List<Disposal>>() {
        @Override
        public void onResponse(Call<List<Disposal>> call, Response<List<Disposal>> response) {
            if (response.body() != null) {
                EntriesList = response.body();
                setRecyclerData(0);
            }
        }

        @Override
        public void onFailure(Call<List<Disposal>> call, Throwable t) {

        }
    });
这在apinterface.java中:

Call<List<Disposal>> getCollection(@Header("Authorization") String token);
DisposalType.java:

public class DisposalType {
    @serializedname("ID")
    @expose 
    public String iD; 
    @serializedname("entries")
    @expose 
    public List<Entries> entries = null;
}
我已经为Gson设置了setLineant(true),因为如果我删除它,我将得到格式错误的json异常,即使这个问题最近开始之前是好的,不确定它是否相关。
在API中添加了2-3个新字段并更改了基本url后,问题开始出现,但核心仍然保持不变。

您需要修改DisposalType,Entries类,如下所示:

修改DisposalType类

public class DisposalType {
    @serializedname("ID")
    @expose 
    public String iD; 

    @serializedname("entries")
    @expose 
    public List<Entries> entries;
}
public class Entries {
    @serializedname("ID") 
    @expose 
    private int iD;

 @serializedname("entry_tally") 
    @expose 
    private int entry_tally;

}

这在apinterface.java中:

Call<Disposal> getCollection(@Header("Authorization") String token);
调用getCollection(@Header(“Authorization”)字符串令牌);
这是您的改装代码

ApiInterface apiService =
            ApiClient.getClient().create(ApiInterface.class);
    String token = prefs.getString("token", "No name defined");//"No name defined" is the default value.

Call<Disposal> callm = apiService.getCollection(token);
callm.enqueue(new Callback<Disposal>() {
    @Override
    public void onResponse(Call<Disposal> call, Response<Disposal> response) {
        if (response.body() != null) {
            Disposal = response.body();

        }
    }

    @Override
    public void onFailure(Call<Disposal> call, Throwable t) {

    }
});
api接口apiService=
ApiClient.getClient().create(apinterface.class);
String token=prefs.getString(“token”,“未定义名称”)//“未定义名称”是默认值。
调用callm=apiService.getCollection(令牌);
callm.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
if(response.body()!=null){
disposition=response.body();
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});

Reformation expect a array and found stringpost the Reformation code here尝试记录响应,可能是api生成了一个错误而不是预期的json。是的,但如果您看到响应,它返回的是数组而不是字符串,这就是我感到困惑的原因,我会用改型代码更新这个问题。伙计们,请在评论中输入否决投票的原因,这样我就可以更正它了。谢谢。现在就是这样,看起来我在输入问题时错过了它。
public class DisposalType {
    @serializedname("ID")
    @expose 
    public String iD; 

    @serializedname("entries")
    @expose 
    public List<Entries> entries;
}
public class Entries {
    @serializedname("ID") 
    @expose 
    private int iD;

 @serializedname("entry_tally") 
    @expose 
    private int entry_tally;

}
Call<Disposal> getCollection(@Header("Authorization") String token);
ApiInterface apiService =
            ApiClient.getClient().create(ApiInterface.class);
    String token = prefs.getString("token", "No name defined");//"No name defined" is the default value.

Call<Disposal> callm = apiService.getCollection(token);
callm.enqueue(new Callback<Disposal>() {
    @Override
    public void onResponse(Call<Disposal> call, Response<Disposal> response) {
        if (response.body() != null) {
            Disposal = response.body();

        }
    }

    @Override
    public void onFailure(Call<Disposal> call, Throwable t) {

    }
});