0
我有一个JSON文件巫婆包含给定类型的列表,例如:如何阅读JSON到集合知道实体的唯一一类与杰克逊ObjectMapper
[{
"createdBy":"SYSTEM_INIT",
"status":401,
"message":"Unauthorized",
"description":"",
"lang":"en"
},{
"createdBy":"SYSTEM_INIT",
"status":413,
"message":"Payload Too Large",
"description":"The request is larger than the server is willing or able to process",
"lang":"en"
}{....
我有一个Java类(本例称它为MyClass)女巫代表这一个实体。 当我想反序列化JSON到集合中,我只有一个Class
对象,其中是MyClass.class
。怎样才能读取到Collection<MyClass>
其实它的“sa春天应用程序了,这是我当前的代码:
public boolean importFromJsonFile(String table, Class clazz) {
Collection<Object> objectCollection = new ArrayList<>();
ObjectMapper mapper = new ObjectMapper();
try {
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("init/" + table + ".import.json").getFile());
objectCollection = mapper.readValue(file, Collection.class);
}catch (Exception e){
log.error("error: ", e);
return false;
}
if(objectCollection.size() < 0){
log.error("There is no data in the file");
return false;
}
try {
for(Object obj : objectCollection){
save(obj, clazz);
}
}catch (Exception e){
log.error("fatal error: ", e);
return false;
}
return true;
}
所以在读取文件后,我的问题,其结果将是LinkedHasMap
一个集合,而不是的Collection
MyClass
与被这个特殊的样本中通过可变clazz
表示。有没有办法做到这一点?
嗯,这是显而易见的,但它不能帮助我,因为MyClass的不是恒定的,它可以是MyCLass2 MyClass3和...可以是很多课程。我有一个属性设置,我希望classpaths,并获得Class对象与Class.forName();该类应与实体和表,以及获取表名,以及它的存储库等...所以我只有MyClass类对象,并且想创建一个列表或什么收集或数组 –
Syngularity
@Syngularity我已经更新了答案,现在你可以在运行时获得列表 –
thx,这是一个很好的起点,但它需要一些修复。这一行:'List myObjects = Arrays.asList(mapper.readValue(file,namedClass));'在Object中创建一个元素获胜的列表,但实际上Object的类名为Class []。 – Syngularity