如何将json转换为Vector? ClassCastException gson Android 4.4.2 [英] How to convert json to Vector ? ClassCastException gson Android 4.4.2

查看:390
本文介绍了如何将json转换为Vector? ClassCastException gson Android 4.4.2的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个问题来阅读json并将其转换为Vector对象,奇怪的部分是这个问题只发生在Android 4.4.2设备上,并且在仿真器上运行。



以下是我的代码:

  JsonReader reader = new JsonReader新的StringReader(字符串)); 

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

allConversationObject.conversations.get(0)

这里是AllConversationsObject:

  public class AllConversationsObject {
Vector< Conversation>对话;
字符串书签;

public Vector< Conversation> getConversations(){
返回对话;


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

public String getBookmark(){
return bookmark;
}

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




$ b

$ 对话中的应用程序崩溃.get(0)出现此错误:


致命异常:java.lang.ClassCastException:
com.google.gson.internal.LinkedTreeMap不能转换为
com.myapp.com.Conversation

这里是build.gradle:


  compile'c​​om.google.code.gson:gson:2.3'


以下是Json:

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

有什么问题?谢谢

解决方案

使用 List 但我的关注点在书签字段中。



根据 json 它是一些对象的 array ,但是您将它建模为 String 。如果您确定<$ c $> List< Object> 或任何 List< String> c> bookmark 是字符串

的数组

I have a problem to read json and convert it to Vector of objects, The weird part is this issue occurs only on Android 4.4.2 Device , and on emulator it's working.

Here is my code:

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

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

allConversationObject.conversations.get(0)

Here is 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;
    }
}

The application crash on conversations.get(0) with this error:

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

Here is build.gradle :

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

Here is the Json:

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

what's the problem ? Thank you

解决方案

Instead of Vector use List but my concern is in the bookmark field.

According to the json it is an array of some objects, but you are modeling it as a String. You should declare it as List<Object> or any List<String> if you are sure that bookmark is array of String

这篇关于如何将json转换为Vector? ClassCastException gson Android 4.4.2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆