我目前正在尝试将JSONObjects的集合保存到我的.yml文件中。 但是当我从文件中加载JSONObjects时,我陷入了困境。
我的消息来源:
static boolean saveChest(JSONObject obj){
chestList.add(obj);
FC = YamlConfiguration.loadConfiguration(STORAGE);
FC.set("chests", chestList.toArray().toString());
try {
FC.save(STORAGE);
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
public static boolean loadChests(){
try{
chestList.clear();
if(!STORAGE.exists()){
STORAGE.getParentFile().mkdirs();
STORAGE.createNewFile();
}
FC = YamlConfiguration.loadConfiguration(STORAGE);
Collection<JSONObject> list = new ArrayList<JSONObject>();
list.addAll((Collection<? extends JSONObject>) (JSONObject) FC.get("chests"));
for(JSONObject temp : list){
chestList.add(temp);
Location loc = (Location) temp.get("loc");
Hologram holo = HologramsAPI.createHologram(PLUGIN, loc.add(0.5, 2, 0.5));
holo.appendTextLine("§e§lVote Chest");
holo.appendTextLine("§bRight-Click with Vote Key to open!");
}
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}
}
public static boolean registerChest(Block chest, ChestType type){
JSONObject temp = new JSONObject();
switch(type){
case VOTE:
temp.put("loc", chest.getLocation().toString());
temp.put("type", type.toString());
Hologram holo = HologramsAPI.createHologram(PLUGIN, chest.getLocation().add(0.5, 2, 0.5));
holo.appendTextLine("§e§lVote Chest");
holo.appendTextLine("§bRight-Click with Vote Key to open!");
break;
}
saveChest(temp);
return false;
}
我收到以下错误:
Chest.java:245:
list.addAll((Collection<? extends JSONObject>) (JSONObject) FC.get("chests"));
现在尝试将近2个小时来解决这个问题,但我想我只是不知道要做些什么来修复它。 你能帮助我吗?
答案 0 :(得分:0)
我认为您正在尝试将一组字符串(从YamlConfiguration对象返回)直接转换为JSONObjects的集合。如果有问题的字符串是JSON格式,您可以实例化一个新的JSONParser并将每个String解析为JSONObject; e.g:
Collection<JSONObject> list = new ArrayList<JSONObject>();
JSONParser jsonParser = new JSONParser();
for (String s : FC.get("chests")) {
list.add((JSONObject) jsonParser.parse(s));
}
或者,为了使用addAll(),您可以首先创建一个字符串集合,然后在循环遍历集合时将它们解析为JSONObjects。