Gson と Guava の両方を使用しています。このsscceのようなクラスをシリアライズしたい
import com.google.common.collect.Multimap;
public class FooManager {
private Multimap<String, Foo> managedFoos;
// other stuff
}
Gson はそれをシリアル化する方法を知りません。だから私はこれをしました:
public final class FoomapSerializer implements
JsonSerializer<Multimap<String, Foo>> {
@SuppressWarnings("serial")
private static final Type t =
new TypeToken<Map<String, Collection<Foo>>>() {}.getType();
@Override
public JsonElement serialize(Multimap<String, Foo> arg0, Type arg1,
JsonSerializationContext arg2) {
return arg2.serialize(arg0.asMap(), t);
}
}
ただし、根底にあるものがめったに変更されない.asMap()
場合でも、何度も呼び出すと遅くなる可能性があります。Map
(オブジェクトのシリアル化はFoo
頻繁に変更されますが、マッピング自体は初期化後に変更されません)。より良い方法はありますか?