2016-05-06 229 views
0

我從.NET WS獲得JSON響應(項目列表),以便我想在我的Android應用程序中轉換爲列表。但是,使用GSON庫時,我得到以下異常:GSON異常:期望BEGIN_ARRAY,但是BEGIN_OBJECT

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException: 預計BEGIN_ARRAY但BEGIN_OBJECT位於第1行第2列路徑$

JSON響應:

{ 
    "d": [ 
     { 
      "Id":1, 
      "Name":"Name1", 
      "Email":"[email protected]" 
     }, 
     { 
      "Id":2, 
      "Name":"Name2", 
      "Email":"[email protected]" 
     } 
    ] 
} 

的Android GSON代碼:

Gson gson = new Gson(); 
Type listType = new TypeToken<List<User>>(){}.getType(); 
List<User> users = (List<User>) gson.fromJson(response, listType); 

據我所知,JSON正在返回一個項目列表,我也試圖解析一個項目列表,所以我不明白這個問題。

在此先感謝

+0

您的JSON是一個對象不是列表 – totoro

+0

[許多重複...](http://stackoverflow.com/search? q =預期+ BEGIN_ARRAY +但+ + + BEGIN_OBJECT) –

+0

謝謝@ cricket_007,但我在發佈前使用過瀏覽器 –

回答

2

你JSON是{ ... },所以不是一個名單,但d是一個列表。

這是完全未經測試,但你應該做這樣的事情:

class Foo { 
    List<User> d; 
} 

Gson gson = new Gson(); 
Foo foo = gson.fromJson(response, Foo.class); 
List<User> users = foo.d; 
+0

這種方式可行......但我不明白爲什麼JSON響應包含{...}使其成爲一個對象而不是一個列表。 –

+0

這似乎是由您的服務創建的某種包裝對象 –

相關問題