java - 将 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
但问题是我们如何转换LinkedHashMap
成Object
?
解决方案
LinkedHashMap 实现 Map 而不是 List
https://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html
也许将您的 feeditemList 字段类型更改为 LinkedHashMap
推荐阅读
- django - Docker 中的 Django 微服务
- python - 使用 python 的 sklearn 和 matlab 的 pca 的 PCA 的不同结果
- python - Amazon Aurora MySQL:查询期间与 MySQL 服务器的连接丢失
- javascript - React Native Fetch Api 无法设置 Cookie 标头
- python - 这些机器学习输出文件的目的和意义是什么?
- c++ - 使用 OpenCV 旋转最小面积矩形
- c - 错误“请求转换为非标量类型”
- angular - 错误处理Angular 6
- oracle - Oracle 插入语句的工作原理
- ios - swift: 改变 UIView 的大小