【发布时间】:2018-12-05 22:47:49
【问题描述】:
我正在使用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 可以解决这个问题,但问题是我们如何将LinkedHashMap 转换为Object?
【问题讨论】:
-
那么,您知道错误的原因了……您还需要我们向您解释什么?
-
我想如何将
LinkedHashMap分配给我的对象(FeedItem)? -
嗯...不是。您可能想要映射 LinkedHashMap 的内容
-
你能展示一下你的本地文件是什么样子的吗?
-
@Stultuske 我只想将
LinkedHashMap转换为对象FeedItem
标签: java android jackson jackson2