2016-03-12 171 views
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(); 

     } 
+0

怎麼樣的錯誤日誌?這似乎很有用 –

+0

我編輯了操作。 – Jaeger

+0

您的JSON解析器看到的是數組而不是對象,因此它引發了該錯誤。請包括您的解析代碼和正在解析的JSON –

回答

0

試着改變你的接口:

@GET("api.php") 
Call<List<Model>> getRoms_center(@Query("company_name") String name); 
相關問題