今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

Google Cloud Endpoint で JsonMappingException が出る場合の対処方法

entity クラスのフィールドに、独自のクラスを追加してたりすると、クライアント側から取得しようとした時にこの例外が発生する。

独自のクラスがサーバーサイドだけで利用しているのであれば、単にクライアント側に送信しないように設定すれば、例外の発生を抑制できる。

クライアント側に送信しないようにするには、getメソッドに @ApiSeriarizationProperty アノテーションをつければいいみたい。

例えば、以下のコードでは Foo を取得するための getFoo() メソッドにアノテーションをつけることで、JsonMappingException がでなくなる。

@Entity
public class Hoge {
    @Id
    private Key key;
    private String name;
    private Foo foo;

    public Key getKey() {
        return key;
    }
    public void setKey(Key key) {
        this.key = key;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    @ApiSerializationProperty(ignored = AnnotationBoolean.TRUE)
    public Foo getFoo() {
        return foo;
    }
    public void setFoo(Foo foo) {
        this.foo = foo;
    }
}