Как проанализировать эти данные JSON в Java - PullRequest
0 голосов
/ 07 февраля 2019

Вот данные JSON, которые мне нужно импортировать в переменные JAVA

{"world": {"-61,66": "1", "-62,66": "2"}}

Я пробовал стандартные учебные пособия, однако все они требуют отформатированный файл JSON, в котором автор контролирует.В этом случае я не.Чтобы сломать это, это для плагина Minecraft под названием FactionsUUID, который хранит фрагменты карты, которые игроки требуют для своей фракции, в части номеров сетки x и z, следовательно, "-61,66", где они выравниваются по "x, z" и "1"и" 2 выравнивает ссылку на идентификатор фракции в другом файле JSON, который сейчас не нуждается в перекрестной индексации.Мне просто нужно иметь возможность в своем коде разделять заявки по идентификатору фракции.

Мир - это объект, но я не могу получить приведенные ниже элементы для разбора в массив.

@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 ПРЕДУПРЕЖДЕНИЕ]: в com.ljd.perditionfcore.Main.onEnable (Main.java:35) [14:51:16 ПРЕДУПРЕЖДЕНИЕ]: в 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]: at org.bukkit.craftbukkit.v1_8_R3.CraftServer.reload (CraftServer.java:726N) [14:51:16]: на орг.букките.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:619N)] 14:51:16: at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand (CraftServer.java:582) [14:51:16 WARN]: at net.minecraft.server.v1_8_R3.DedicatedServer.aO (DedicatedServer.jav [14]: 51: 16 ПРЕДУПРЕЖДЕНИЕ]: на net.minecraft.server.v1_8_R3.DedicatedServer.B (DedicatedServer.java:379) [14:51:16 ПРЕДУПРЕЖДЕНИЕ]: на net.minecraft.server.v1_8_R3.MinecraftServer.A (MinecraftServer.Java: 715) [14:51:16 ПРЕДУПРЕЖДЕНИЕ]: в net.minecraft.server.v1_8_R3.MinecraftServer.run (MinecraftServer.java:618) [14:51:16 ПРЕДУПРЕЖДЕНИЕ]: в java.lang.Thread.run (Неизвестный источник)

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

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
}
0 голосов
/ 08 февраля 2019

Ваши данные неверны, не забудьте проверить данные, которые вы можете проанализировать.

Проблема в этой строке кода:

JSONObject jsonObject = (JSONObject) obj;

Что будет работать в вашем случае:

JSONArray jsonArray = (JSONArray) obj;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...