/ / Problemy z odlewaniem konwersji - json, konwersja typu

Problemy z przenoszeniem konwersji - json, konwersja typu

Zajmuję się tworzeniem gry z małymi bocznymi przewijakami za pomocą zręcznego 2D lwjgl, a podczas rzucania czegoś pojawia się obecny błąd.

Wygląda na to, że nie rozpoznaję, że rzucam ciąg jsonów jako JsonArray.

Błąd i funkcja,

java.lang.ClassCastException: java.lang.String cannot be cast to org.json.simple.JSONArray
at world.World.load(World.java:35)
at game.Engine.initStatesList(Engine.java:64)
at org.newdawn.slick.state.StateBasedGame.init(StateBasedGame.java:164)

funkcjonować:

public static void load(String path) throws Exception
{
JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader(path));
JSONObject jSonOBJ = (JSONObject)obj;

JSONArray layers = (JSONArray)jSonOBJ.get("layers");
int amount = layers.size();

for (int i = 0; i < amount; ++i)
{
JSONObject layer = (JSONObject) layers.get(i);
String type = (String)layer.get("name");

if (type.equals("solids"))
{
solids = parse((JSONArray)layer.get("data")); //error
}
else if (type.equals("spawns"))
{
//to-do
}
}
}

to tylko po to, aby sparsować, czy json, moja mapa, kafelek jest solidny czy nie, ale utknąłem na tym małym błędzie przez jakiś czas. linia kodu solids = parse((JSONArray)layer.get("data")); powinien przekonwertować go na JSONArray?

Odpowiedzi:

0 dla odpowiedzi № 1

Istnieje wiele sposobów na uzyskanie obiektu, aby uniemożliwić rzutowanie za każdym razem. Metoda getJSONArray pozwoli ci mieć bezpośrednio JSONArray.

Oto przykład zaczerpnięty z ten post:

JSONObject jsnobject = new JSONObject(yourString);
JSONArray jsonArray = jsnobject.getJSONArray("nameOfArrayAttribute");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject explrObject = jsonArray.getJSONObject(i);
}

Tutaj widzisz, że musisz tylko zbudować swój obiekt Json z łańcucha znaków. Następnie możesz wyodrębnić swój dokument za pomocą określonej metody, aby uzyskać silny wpisany obiekt.