我编写了一个实用程序函数来帮助使用gson将firebase数据对象转换为java对象,因为它们内置的jackson转换器非常糟糕。 该方法适用于Objects,但不适用于对象的ArrayList
public class FirebaseUtil {
public static <T extends Object> T getValue(Object value, Class<T> valueType) {
String stringValue = new Gson().toJson(value);
return new Gson().fromJson(stringValue, valueType);
}
}
然后我可以像
那样做一些事情 Card card = FirebaseUtil.getValue(dataSnapshot.getValue(), Card.class)
但是,如果我想反序列化一个对象数组,它将无法工作
Type listType = new TypeToken<ArrayList<Card>>() {}.getType();
ArrayList<Card> cards = FirebaseUtil.getValue(dataSnapshot.getValue(),listType);
我想我可能需要第二个辅助方法,但不确定第二个参数应该是什么
编辑: 这种方法似乎有效
public static <T> T getValue(Object value, Type type) {
String stringValue = new Gson().toJson(value);
return new Gson().fromJson(stringValue, type);
}