0

I'm using jackson to read and write object into local json file.
It successfully read and write value. But problem is when I read value from file. and assign it to my object it give me an error.

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.testing.FeedItem

I know the reason of error because to read value from file jackons use LinkedHashMap So, LinkedHashMap can not cast to object(FeedItem)

Here is what I'm using.

PostFeed

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

Reading Value from File

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

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

Update Write Value to local File

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

I found similar question LinkedhashMap can not cast to model Account But this question is not useful in my case, Almost I tried all answer but no one solve my problem.

Can you please let me know how can I solve this ?

Update: FeedItem

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

Update: JSON File

{
 "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
  }

  ]

}

Update: Solution

This problem can be slove by converting LinkedHashMap into custom object FeedItem But question is how we can convert LinkedHashMap into Object ?

Azeem Haider
  • 1,443
  • 4
  • 23
  • 41

3 Answers3

0

LinkedHashMap implements Map not List

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

Maybe change your feeditemList field type to LinkedHashMap

Alays
  • 112
  • 2
  • 19
0

Try this code if your PostFeed object not null then also feeditemList is not empty then used below code..

    if (postFeed!=null &&  !postFeed.getFeedList().isEmpty()){

        FeedItem feedItem = postFeed.getFeedList().get(0);
    }
0

Try using this:

`  public class PostFeed{
       private String name;
       private LinkedHashMap<FeedItem> feeditemList;
//     private Map<FreedItem> freeditemlist
       // or you can also do this
       // other code getter setter etc
  }`

because LinkedHashMap implements Map not List

Naman jain
  • 66
  • 11