/ / Проблеми з перетворенням перетворення - json, перетворення типу

Проблеми з конвертуванням лиття - json, перетворення типу

Я розробляю невелику гру скроллер стороні, використовуючи пляму 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 зі свого рядка. Потім ви можете витягти ваш документ за допомогою конкретного методу, щоб отримати об'єкт, який набрав сильний тип.