使用泛型类型反序列化gson字符串的方法不适用于arrayList

时间:2015-10-15 21:29:40

标签: java android arrays generics gson

我编写了一个实用程序函数来帮助使用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);
}

0 个答案:

没有答案