/ / Problemas de conversão de conversão - json, conversão de tipos

Problemas de conversão de conversão - json, conversão de tipos

Eu estou desenvolvendo um pequeno jogo de rolagem lateral usando lwjgl 2D e estou correndo em um erro atual ao lançar algo.

Parece não estar reconhecendo que estou lançando a string json como um JsonArray.

O erro e a função

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)

função:

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

isso é apenas para analisar se o json, meu mapa, bloco é um sólido ou não, mas fiquei preso nesse pequeno erro por algum tempo. a linha de código solids = parse((JSONArray)layer.get("data")); deve convertê-lo para JSONArray correto?

Respostas:

0 para resposta № 1

Há muita maneira de fazer com que Objeto evite que você ative toda vez. O método getJSONArray permitirá que você tenha diretamente um JSONArray.

Aqui está um exemplo tirado de esta postagem:

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

Aqui você vê que você apenas tem que construir seu objeto Json a partir do seu String. Então você pode extrair seu documento com um método específico para obter um objeto tipado forte.