这是我需要导入到JAVA变量中的JSON数据
{ “世界”:{ “ -61,66”:“ 1”, “ -62,66”:“ 2” } }
我已经尝试过标准教程,但是它们都需要作者控制的格式化JSON文件。在这种情况下,我不是。 为了解决这个问题,需要使用名为FactionsUUID的Minecraft插件,该插件将玩家要求的地图块存储在x和z的网格编号块中,因此将“ -61,66”对齐到“ x,z”和“ 1” “和” 2“与另一个不需要交叉索引的JSON文件中的Faction ID引用对齐。我只需要能够在我的代码中按Faction ID分隔声明即可。
世界是一个对象,但是我无法获取下面的项目来解析为数组。
@SuppressWarnings("unchecked")
public static void main() {
JSONParser parser = new JSONParser();
try {
Object obj = parser.parse(new FileReader(
"C:\\TestServer\\jar\\plugins\\Factions\\board.json"));
JSONObject jsonObject = (JSONObject) obj;
(错误下方的第59行) JSONArray theworld =(JSONArray)jsonObject.get(“ world”);
Iterator<String> iterator = theworld.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
Main.logToFile("FTOP-> " + iterator.next());
}
} catch (Exception e) {
e.printStackTrace();
}
}
[14:51:16 WARN]:java.lang.ClassCastException:org.json.simple.JSONObject无法转换为org.json.simple.JSONArray [14:51:16 WARN]:位于com.ljd.perditionfcore.events.FTOPScan.main(FTOPScan.java:59) [14:51:16 WARN]:位于com.ljd.perditionfcore.Main.onEnable(Main.java:35) [14:51:16 WARN]:位于org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) [14:51:16 WARN]:位于org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:332) [14:51:16 WARN]:位于org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:404) [14:51:16 WARN]:位于org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:313) [14:51:16 WARN]:位于org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:272) [14:51:16 WARN]:位于org.bukkit.craftbukkit.v1_8_R3.CraftServer.reload(CraftServer.java:726) [14:51:16 WARN]:位于org.bukkit.Bukkit.reload(Bukkit.java:556) [14:51:16 WARN]:位于org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [14:51:16 WARN]:位于org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:143) [14:51:16 WARN]:位于org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:619) [14:51:16 WARN]:位于org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(CraftServer.java:582) [14:51:16 WARN]:位于net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:416) [14:51:16 WARN]:位于net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:379) [14:51:16 WARN]:位于net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:715) [14:51:16 WARN]:位于net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:618) [14:51:16 WARN]:位于java.lang.Thread.run(未知来源)
答案 0 :(得分:5)
jsonObject.get("world")
返回一个对象({ "-61,66": "1", "-62,66": "2" }
),因此您可能希望遍历结果对象的键集:
Map<String, String> map = new HashMap<String, String>();
map.put("-61,66", "1");
map.put("-62,66", "2");
JSONObject obj = new JSONObject(); // obj = {"world":{"-61,66":"1","-62,66":"2"}}
obj.put("world", new JSONObject(map));
JSONObject worldObject = obj.getJSONObject("world");
Set<String> keySet = worldObject.keySet(); // keySet = [-61,66, -62,66]
System.out.println(worldObject.keySet());
for (String key : keySet) {
System.out.println(worldObject.get(key)); // returns 1 and then 2
}
答案 1 :(得分:-3)
您的数据无效,请确保检查您可以解析的数据。
问题出在这行代码中:
JSONObject jsonObject = (JSONObject) obj;
适合您的情况是
JSONArray jsonArray = (JSONArray) obj;