が最後にそれを考え出した:)私は私のオブジェクトごとにJsonSerializerを実装し、手動でシリアライズを指定する必要が判明。非常に面倒です!他のオブジェクトへの参照には、ネストが必要です。これは、toJsonTree()
メソッドを使用して行いました。ここに私の最も読みやすいシリアライザ
private class InfoSerializer implements JsonSerializer<Info>
{
@Override
public JsonElement serialize(Info src, Type typeOfSrc,
JsonSerializationContext context)
{
JsonObject obj = new JsonObject();
obj.addProperty("details", src.getDetails());
obj.addProperty("hostId", src.getHostId());
obj.addProperty("dateCreated", src.getDateCreated().toString());
obj.addProperty("expiryDate", src.getExpiryDate().toString());
obj.add("alternativeInfo", getGsonInstance().toJsonTree(src.getAlternativeInfo()));
obj.add("alternativeTimes", getGsonInstance().toJsonTree(src.getAlternativeTimes()));
return obj;
}
}
注意です:getGsonInstance()
、私はシングルトンGsonオブジェクトを返すために書いた方法です。
そして、それは、次のように呼び出しますあなたはちょうどあなたがtransient
キーワードでそれらにラベルを付けることができることを覚えて、特定のフィールドをシリアル化を回避しようとしている場合
public String infoToJson(Info i)
{
GsonBuilder gson = new GsonBuilder();
gson.registerTypeAdapter(Info.class, new InfoSerializer());
return gson.create().toJson(i);
}
問題は、私がgreenDaoオブジェクトを再生成した場合、手動で良い100個のフィールドを一時的に再ラベル付けする必要があるということです。 – Chironex
ああ、バマー。私は、DAOライブラリが一時的なフィールドのサポートを欠いていると少し驚いています。 – Tom
主な問題は、独自のデータベースマッピングとクラスが生成される前に編集できない内部関数のために使用される多くのフィールドを生成することです。 – Chironex