簡體   English   中英

在GSON中將類與泛型一起使用

[英]Using a Class with Generics with GSON

我希望獲得有關如何解決此問題的指導。 我正在使用第三方API獲取JSON數據。 它的結構類似於:

{items: [
    {attribute : Value},
    {attribute : Value}]
 count : value,
 etc
}

items數組可以容納不同的數據,所以我有一個類:

public Items<T> {
    private List<T> items;
    // Others API Variables

    public List<T> getItems(){
        return items;
    }

    public void setItems(List<T> items){
       this.items = items;
    }
    // Other Getters/Setters
}

我想在調用類中做的是:

public CallingClass {

    public void Method(){
    //Code to get reader object
    Items<User> userItems = Gson().fromJson(ReaderObject, Items.class);
    //Other processing code
    }
}

我得到錯誤:

java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to User.class

我正在閱讀這篇文章,我認為解決方案類似於我需要的解決方案,但我不知道該由誰來解決。 我的想法是,只有一個Items類,可以將其傳遞給返回的不同Types。

思想,幫助,任何幫助都會有所幫助。

編輯:

好,所以我現在感覺像個白痴,但睡個好覺。 解決方案在我發布的鏈接中,我只是不需要列表。 我的編碼解決方案如下:

public CallingClass {

    public void Method(){
    //Code to get reader object
    Items<User> userItems = Gson().fromJson(ReaderObject, new TypeToken<Items<User>>(){}.getType());
    //Other processing code
    }
}

好,所以我現在感覺像個白痴,但睡個好覺。 解決方案在我發布的鏈接中,我只是不需要列表。 我的編碼解決方案如下:

public CallingClass {

    public void Method(){
    //Code to get reader object
    Items<User> userItems = Gson().fromJson(ReaderObject, new TypeToken<Items<User>>(){}.getType());
    //Other processing code
    }
}

暫無
暫無

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

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