我正在使用光滑的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 :(得分:0)
有很多方法可以让Object每次都无法进行投射。方法getJSONArray
将允许您直接拥有JSONArray。
以下是this post:
的示例JSONObject jsnobject = new JSONObject(yourString);
JSONArray jsonArray = jsnobject.getJSONArray("nameOfArrayAttribute");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject explrObject = jsonArray.getJSONObject(i);
}
在这里你看到你只需要从你的String中构建你的Json对象。然后,您可以使用特定方法提取文档以获取强类型对象。