首页 > 解决方案 > 将 LinkedHashMap 转换为自定义 java 对象 android

问题描述

我正在使用jackson将对象读取和写入本地 json 文件。
它成功地读取和写入值。但问题是当我从文件中读取值时。并将它分配给我的对象它给我一个错误。

java.lang.ClassCastException:java.util.LinkedHashMap 无法转换为 com.testing.FeedItem

我知道错误的原因是因为要从文件中读取值 jackons 使用LinkedHashMap所以,LinkedHashMap不能转换为对象(FeedItem)

这是我正在使用的。

PostFeed

  public class PostFeed{
       private String name;
       private List<FeedItem> feeditemList;
       // other code getter setter etc
  }

从文件中读取值

ObjectMapper objectMapper = new ObjectMapper();
PostFeed postFeed = objectMapper.readValue(offlinePrivateFeed, PostFeed.class);

FeedItem feedItem = postFeed.getFeedList().get(0); // Error

将写入值更新到本地文件

     ObjectMapper objectMapper = new ObjectMapper();
     objectMapper.writeValue(Utils.getOutputJsonFile("private-feed"), postFeed);

我发现了类似的问题LinkedhashMap can not cast to model Account但是这个问题对我来说没有用,几乎我尝试了所有答案,但没有人解决我的问题。

你能告诉我如何解决这个问题吗?

更新:FeedItem

  public class FeedItem{
     private String name;
     private int badge;
     private Boolean allow;
     // other code getter setter etc
  }

更新:JSON 文件

{
 "feedName": "test123",
 "time" : "7-7-1994",
 "feedList": [
  {
   "name": "feedItemName",
   "badge": 4,
   "allow": false
  },
  {
   "name": "feedItemName",
   "badge": 1,
   "allow": true
  },
  {
   "name": "feedItemName",
   "badge": 2,
   "allow": false
  }

  ]

}

更新:解决方案

这个问题可以通过转换LinkedHashMap成自定义对象来解决FeedItem但问题是我们如何转换LinkedHashMapObject

标签: javaandroidjacksonjackson2

解决方案


LinkedHashMap 实现 Map 而不是 List

https://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html

也许将您的 feeditemList 字段类型更改为 LinkedHashMap


推荐阅读