/ / Conversion Casting Issues - json, conversion de type

Problèmes liés à la conversion - json, conversion de type

Je suis en train de développer un petit jeu de scroller latéral avec une ludie 2D lwjgl et je rencontre une erreur en cours lors du casting.

Il semble ne pas reconnaître que je suis en train de transformer la chaîne json en un JsonArray.

L'erreur et la fonction,

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)

fonction:

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

ceci est juste pour analyser si le json, ma carte, la tuile est solide ou non, mais je suis bloqué sur cette petite erreur depuis un peu de temps. la ligne de code solids = parse((JSONArray)layer.get("data")); doit le convertir en JSONArray correct?

Réponses:

0 pour la réponse № 1

Il y a beaucoup de façons d’obtenir Object pour vous empêcher de lancer à chaque fois. La méthode getJSONArray vous permettra d'avoir directement un JSONArray.

Voici un exemple tiré de ce post:

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

Ici, vous voyez qu'il vous suffit de construire votre objet Json à partir de votre chaîne. Ensuite, vous pouvez extraire votre document avec une méthode spécifique pour obtenir un objet typé fort.