0
我有一個JSON和搜索功能,我的問題是:改造:預期BEGIN_OBJECT但BEGIN_ARRAY第2行2列路徑
我有3項:
1.測試1個
2.測試2
3.測試3
假設用戶要搜索測試,他提交「測試」,所有相關的測試將顯示。但是,如果他只想要「測試1」,它會在標題中拋出錯誤,有時顯示,有時不顯示。
如果需要,你想要什麼文件?
錯誤:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 2 column 2 path $
提,爲 「2」 進行搜索時,它會顯示 「測試2」,但搜索 「測試2」 將拋出一個錯誤。
它在基本Json上工作,切換到新庫後,它停止工作。
JSON:
{"roms_center":[{"device_name":"Test 1","roms_count":"1","device_id":"0"},{"device_name":"Test 2","roms_count":"2","device_id":"1"}]}
代碼解析它:
接口
@GET("api.php")
Call<Model> getRoms_center(@Query("company_name") String name);
型號:
private class Model{
private List<CatItem> roms_center;
public List<CatItem> getRoms_center() {
return roms_center;
}
public void setRoms_center(List<CatItem> roms_center) {
this.roms_center = roms_center;
}
}
進行連接的方法(圖書館法):
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Base)
.addConverterFactory(GsonConverterFactory.create())
.build();
ReApi Api = retrofit.create(ReApi.class);
Connection = Api.getRoms_center(Company);
Connection.enqueue(new Callback<Model>() {
@Override
public void onResponse(Call<Model> call, Response<Model> response) {
ProgressLoading.setVisibility(View.GONE);
isLoading = false;
List<CatItem> ROMs = response.body().getRoms_center();
for(int i = 0 ; i < ROMs.size() ; i ++){
CatItem Item = new CatItem();
Item.setDevice_Name(ROMs.get(i).getDevice_Name());
Item.setTotal_Downloads(ROMs.get(i).getTotal_Downloads());
Item.setDevice_ID(ROMs.get(i).getDevice_ID());
if(rowListItem == null)
rowListItem = new ArrayList<>();
rowListItem.add(Item);
}
Adapter.notifyDataSetChanged();
}
怎麼樣的錯誤日誌?這似乎很有用 –
我編輯了操作。 – Jaeger
您的JSON解析器看到的是數組而不是對象,因此它引發了該錯誤。請包括您的解析代碼和正在解析的JSON –