目的:Googleエンドポイント内で@JsonStringアノテーションを使用するJavaオブジェクトからJSON文字列を生成します。@JsonStringアノテーションを使用してGoogleエンドポイントでJSONを生成
戦略:
public class MyBean {
@JsonString private Long id;
...
String practicaJson = new Gson.toJson(myBean);
期待される結果:
{"id":"5658091668373504",...
実際の結果:
{"id":5658091668373504,...
コンテキスト: は私がAndroidアプリとGoogleクラウドエンドポイントを持っています。 Beanは、エンドポイントのhttpインターフェイスを介してエンドポイントからAndroidクライアントに送信されます。さて、私はFirebase通知でBeanを送信しようとしています。だから、私は自分のjson文字列を生成する必要があります。
Googleのエンドポイントモジュール内のBeanは、私が書いたプレーンなJavaクラスです。 Androidクライアントは、GoogleエンドポイントライブラリからそのBeanの生成バージョンを受け取ります。その生成されたBeanには@JsonStringアノテーションがあります。 (私が気にかけていないJavaScriptの互換性の問題のため、Googleのエンドポイントライブラリはこれを行います)。
エンドポイントのサイドBeanで生成されたjsonは、AndroidクライアントのBeanと互換性がありません。簡単な解決策は、エンドポイントBeanに@JsonStringアノテーションを追加するだけだったようです。しかし、Gsonは@JsonStringアノテーションを無視しているようです。
JSONの問題を解決するためのヒントは歓迎します。同じBean/pojoをHTTPトランスポート経由で、時にはFirebase通知メッセージ経由で送るよりスマートな方法があれば、それも聞いてみたいと思います。
フィールドをLongからStringに変更したくありません。私はコードのLong型について気にします。私はそれが転送中にどのように見えるか気にしない。 @JsonStringアノテーションはそれを処理する必要があります(またはクライアントとサーバーで対称的に処理しないでください)。 IDはObjectifyによって生成されます。 –