Я розробляю невелику гру скроллер стороні, використовуючи пляму 2D lwjgl і я працюю в поточну помилку при лиття щось.
Здається, це не визнає, що я "" вкладаю рядок json як JsonArray.
Помилка і функція,
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)
функція:
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
}
}
}
це просто щоб розібрати, якщо json, моя карта, плитка тверда чи ні, але я застряг на цій маленькій помилці за деякий час. рядок коду solids = parse((JSONArray)layer.get("data"));
слід перетворити його в JSONArray правильно?
Відповіді:
0 для відповіді № 1Існує багато способів отримати об'єкт, щоб запобігти вам відкидання кожного разу. Спосіб getJSONArray
дозволить вам мати безпосередньо JSONArray.
Ось приклад взято з цей пост:
JSONObject jsnobject = new JSONObject(yourString);
JSONArray jsonArray = jsnobject.getJSONArray("nameOfArrayAttribute");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject explrObject = jsonArray.getJSONObject(i);
}
Тут ви бачите, що вам потрібно просто створити свій Json Object зі свого рядка. Потім ви можете витягти ваш документ за допомогою конкретного методу, щоб отримати об'єкт, який набрав сильний тип.