我同时使用 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
对象的序列化会经常改变,但映射本身在初始化后不会改变)。有没有更好的办法?