/ / Konvertierungs-Casting-Probleme - json, Typumwandlung

Konvertierungs-Casting-Probleme - json, Typkonvertierung

Ich entwickle ein kleines Side-Scroller-Spiel mit Slick-2D-Lwjgl und stoße beim Casting auf einen aktuellen Fehler.

Es scheint nicht zu erkennen, dass ich die Json-Saite als JsonArray besetzt habe.

Der Fehler und die Funktion

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)

Funktion:

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
}
}
}

Dies ist nur zu analysieren, wenn der Json, meine Karte, ein Kachel fest ist oder nicht, aber ich habe diesen kleinen Fehler seit einiger Zeit festgehalten. die Codezeile solids = parse((JSONArray)layer.get("data")); sollte es in JSONArray konvertieren?

Antworten:

0 für die Antwort № 1

Es gibt viele Möglichkeiten, Object zu erhalten, damit Sie nicht jedes Mal wirken. Die Methode getJSONArray erlaubt Ihnen, direkt einen JSONArray zu haben.

Hier ist ein Beispiel aus dieser Beitrag:

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

Hier sehen Sie, dass Sie nur Ihr Json-Objekt aus Ihrer Zeichenfolge erstellen müssen. Dann können Sie Ihr Dokument mit einer bestimmten Methode extrahieren, um ein stark typisiertes Objekt zu erhalten.