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