2016-05-06 2 views
0

ました。しかしGSONライブラリを使用しているとき、私は次の例外を取得:GSON例外:BEGIN_ARRAYを期待しますが、私は私のAndroidアプリのリストに変換したいように、私は、.NET WSからのJSONレスポンス(項目のリスト)を取得しています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]" 
     } 
    ] 
} 

アンドロイド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

これはサービスによって作成された何らかの種類のラッパーオブジェクトのようです –

関連する問題