转换投射问题

时间:2015-12-04 04:15:21

标签: json type-conversion

我正在使用光滑的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正确吗?

1 个答案:

答案 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对象。然后,您可以使用特定方法提取文档以获取强类型对象。