0

まず、GSONを使用するのはこれが初めてです。

いくつかのJSONを解析しようとすると、「互換性のないタイプ」が発生しました...

Gson gson = new Gson();
PlayerData data = gson.fromJson(response, PlayerData.class); // Incompatible types...

PlayerData内部クラスです:

class PlayerData {
    public Point position;
    public String mapname;
    public int level;

    public PlayerData() {}
}

何が原因ですか?GSONドキュメントには明らかに方法がpublic <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxExceptionあり、GSONユーザーガイドのGoogleと同じように(AFAIK)で行っています。

編集:
XCodeは奇妙なことをしTerminalていました。サーバーへのリクエストを除いて、すべてが機能する状態でこれをコンパイルしようとすると、response空のままだったため、いくつかのNPEが発生しました。maaartinusのおかげで、コンパイラエラーがあってはならないことを知り、XCodeなしでコンパイルしようとしました。

4

2 に答える 2

3

内部クラスを作成してみてください。そうしないと、 Gsonユーザーガイドに記載されているstaticカスタムクラスが必要になります。InstanceCreator

Gsonは、純粋な内部クラスを自動的に逆シリアル化できません。これは、引数なしのコンストラクターも、逆シリアル化時に使用できない包含オブジェクトへの参照を必要とするためです。この問題に対処するには、内部クラスを静的にするか、カスタムInstanceCreatorを提供します。

于 2012-09-21T08:53:34.340 に答える
1

私にとってはコンパイルされますが、に置き換える必要がありましGSONGson。この質問を書いているときにずさんだったか、私が聞いたことがない「GSON」を使用しています。

あなたresponseString???

実行したら、VrushankDesaiによる回答が必要になります。

于 2012-09-21T14:57:27.223 に答える