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

时间:2014-10-21 10:25:58

标签: java json libgdx

我正在将一个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));
    }

...

工作正常,但我找不到循环通过&#34;级别的正确方法&#34; &#34; worldObect&#34;的孩子当我使用 JsonValue 而不是 JSONObject 时,libgdx中的Json。

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

1 个答案:

答案 0 :(得分:0)

基于此: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));
    }