有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在libgdx的JsonValue中循环数组的最佳方式是什么?

我正在将一个只支持Android的游戏移植到libgdx。世界和级别信息存储在json文件中

我以前使用getJSONArray(id)访问数组,如下所示:

public static WorldVO create(JSONObject worldObject) {
    WorldVO worldVO = new WorldVO();

    worldVO.id = worldObject.getInt("id");
    worldVO.unlock = worldObject.getInt("stars_to_unlock");

    worldObject.getChild("levels");
    JSONArray levelJsonArray = worldObject.getJSONArray("levels");
    int len = levelJsonArray.length();
    worldVO.levelVOs = new LevelVO[len];
    for (int i = 0; i < len; i++) {
        worldVO.levelVOs[i] = LevelVO.create(levelJsonArray.getJSONObject(i));
    }

这很好,但是当我使用JsonValue而不是JSONObject时,我找不到正确的方法来循环libgdx中“worldObect”Json的“levels”子级

访问整数字段不是问题,但是JsonValue没有getJSONArray。知道用什么吗?谢谢


共 (1) 个答案

  1. # 1 楼答案

    基于此:http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/utils/JsonValue.html 试试这个:

    public static WorldVO create(JsonValue worldObject)
    {
        WorldVO worldVO = new WorldVO();
    
        worldVO.id = worldObject.getInt("id");
        worldVO.unlock = worldObject.getInt("stars_to_unlock");
    
        JsonValue levels = worldObject.get("levels");
        int len = levels.size;
        worldVO.levelVOs = new LevelVO[len];
        for (int i = 0; i < len; i++)
        {
            worldVO.levelVOs[i] = LevelVO.create(levels.get(i));
        }