17

Gson を使用してアクティブな Android モデルをシリアル化しています。モデル クラスにはプリミティブのみが含まれており、Gson はデフォルト設定でシリアル化に問題はないはずです。ただし、試してみると、次のエラーが表示されます。

java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: <MyClass>. Forgot to register a type adapter?

モデル クラスごとに型アダプターを作成したくないのですが、どうすればこの問題を回避できますか?

4

2 に答える 2

23

理解した。もちろん、Active Android の基本モデル クラスは、デフォルトではシリアル化できないフィールドを追加しています。これらのフィールドは、次のように Gson のexcluedFieldsWithoutExposeAnnotation()オプション を使用して無視できます。

Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
String json = gson.toJson(new Book());

@Exposeアノテーションを使用してクラスを変更し、シリアル化する必要があるフィールドを示します。

@Table(name = "Foo")
public class Foo extends Model {

    @Expose
    @Column(name = "Name")
    public String name;

    @Expose
    @Column(name = "Sort")
    public int sort;

    ...
}
于 2015-04-28T00:19:22.290 に答える