我正在使用jackson
来将对象读写到本地json文件中。
它成功读取和写入值。但是问题是当我从文件中读取值时。并将其分配给我的对象会给我一个错误。
java.lang.ClassCastException:java.util.LinkedHashMap无法转换为com.testing.FeedItem
我知道错误的原因,因为使用LinkedHashMap
从文件Jackons读取值,所以LinkedHashMap
无法转换为object(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
来解决这个问题,但问题是如何将LinkedHashMap
转换为Object
?
答案 0 :(得分:0)
LinkedHashMap实现了Map not List
https://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html
也许将您的feeditemList字段类型更改为LinkedHashMap
答案 1 :(得分:0)
如果您的PostFeed对象不为null,然后feeditemList也为空,请尝试以下代码,然后在下面的代码中使用。.
if (postFeed!=null && !postFeed.getFeedList().isEmpty()){
FeedItem feedItem = postFeed.getFeedList().get(0);
}
答案 2 :(得分:0)
尝试使用此:
` 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
}`
因为LinkedHashMap实现了Map not List