簡體   English   中英

在這種情況下如何為GSON指定泛型類型

[英]How to specify generic type in this case for GSON

我有以下代碼來說明我的問題:

首先,我定義Box類和Cat類

public class Box<T> {
    private T data;

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
}
public class Cat {
    private String name;
    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

然后我定義了GsonUtils (靜態類),旨在將一些json字符串序列化為Box<T>的對象

public class GsonUtils {

    public static <T> Box<T> json2BoxObject(String json) {
        Type tpe = new TypeToken<Box<T>>(){}.getType();
        return  new GsonBuilder().create().fromJson(json, tpe);
    }

}
  1. 如果我可以為json2BoxObject方法提供Cat類型,那么我會得到一個Box<Cat>
  2. 如果我可以為json2BoxObject方法提供Dog Type,那么我會得到一個Box<Dog>

但是,我不知道如何為json2BoxObject提供一個類型,這是我要問的問題

使用上面的代碼,給json2BoxObject提供json字符串{"data":{"name":"Kitty","age":1}} ,我想得到一個Box<Cat>對象,但我得到一個Box [地圖]

在某些時候你需要提到貓或狗。 我使用Box創建了Type,並在json2Java方法中傳遞了它。

String msg ="{\"data\":{\"name\":\"Kitty\",\"age\":1}}";
Type type = new TypeToken<Box<Cat>>(){}.getType();
Box<Cat> obj = GsonUtils.json2Java(msg, type);
System.out.println(obj);

json2Java方法是:

public static <T> Box<T> json2Java(String json, Type type) {
    Box<T> box = new GsonBuilder().create().fromJson(json, type);
    return box;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM