2017-03-02 30 views
0

我有一個問題,閱讀JSON並將其轉換爲矢量對象,奇怪的部分是這個問題只發生在Android 4.4.2設備上,並在仿真器上工作。如何將json轉換爲Vector? ClassCastException gson Android 4.4.2

這裏是我的代碼:

JsonReader reader = new JsonReader(new StringReader(string)); 

AllConversationsObject allConversationsObject = gson.fromJson(reader,AllConversationsObject.class); 

allConversationObject.conversations.get(0) 

這裏是AllConversationsObject:

public class AllConversationsObject { 
    Vector<Conversation> conversations; 
    String bookmark; 

    public Vector<Conversation> getConversations() { 
     return conversations; 
    } 

    public void setConversations(Vector<Conversation> conversations) { 
     this.conversations = conversations; 
    } 

    public String getBookmark() { 
     return bookmark; 
    } 

    public void setBookmark(String bookmark) { 
     this.bookmark = bookmark; 
    } 
} 

conversations.get(0)應用程序崩潰與此錯誤:

Fatal Exception: java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to com.myapp.com.Conversation

這裏的build.gradle:

compile 'com.google.code.gson:gson:2.3' 

這裏是JSON:

{ 
    "bookmark": "string", 
    "conversations": [ 
    {}, 
    {} 
    ] 
} 

什麼問題?謝謝

+0

陣列沒有樣品JSON是不可能的回答......也就是爲什麼矢量ArrayList不是? – Selvin

+0

@Selvin謝謝,我可以使用ArrayList,但Vector有問題嗎?我將添加json,但我100%確定Json沒有問題,因爲它在其他版本上工作 – david

+0

什麼是您的**讀者**?你是一個字符串,你是如何創建它的? –

回答

0

而不是Vector使用List但我的問題是在bookmark字段。

根據json這是一個數組的某些對象,但您將它建模爲String。你應該把它聲明爲List<Object>或任何List<String>如果你確信bookmarkString

+0

謝謝,書籤是字符串,我編輯了我的問題。抱歉!我會檢查並讓你知道。再次感謝 – david

+0

你能解釋一下,爲什麼我需要使用List而不是Vector? – david

+0

由於Vector是同步的,列表具有更好的性能 – jakubbialkowski