【问题标题】:Conversion Casting Issues转换铸造问题
【发布时间】:2015-12-04 04:15:21
【问题描述】:

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

【问题讨论】:

    标签: json type-conversion


    【解决方案1】:

    有很多方法可以让 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);
    }
    

    在这里你看到你只需要从你的字符串中构建你的 Json 对象。然后你可以用特定的方法提取你的文档以获得强类型对象。

    【讨论】:

    • 仍然有这个问题,Image[][] solids 是我的二维图像数组。我只是调用,solids = 然后解析,parse((JSONArray)layer layer 是一个 JSONObject,其中包含一个实体索引,.get("data") .get 通过在我的 layers 对象中找到的键“数据”接收二维数组JSON 请求
    • 您能提供您的 JSON 文本吗?你有没有试过跳过演员并打电话给solids = layer.getJSONArray("data");
    猜你喜欢
    • 2021-01-16
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 2020-09-17
    • 1970-01-01
    • 2012-01-12
    相关资源
    最近更新 更多