java - LibGDX:从 json 文件读取到 ArrayList

标签 java json libgdx

我需要帮助将 json 文件读取到 ArrayList。

我有 json 文件:

[
    {
        "name": "Wall",
        "symbol": "#",      
    },
    {
        "name": "Floor",
        "symbol": ".",
    }
]

我有一个类:

public class Tile {

    public String name;
    public String symbol;

}

我还有另一个 ArrayList 类:

public class Data {

    public static ArrayList<Tile> tilesData;

    public static void loadData() {
        tilesData = new ArrayList<Tile>();
        Json json = new Json();
        json.fromJson(Tile.class, Gdx.files.internal("data/tiles.json"));
    }

}

我需要用 json 文件中的数据填充这个 ArrayList,但我遇到了一些问题。我猜这条线

json.fromJson(Tile.class, Gdx.files.internal("data/tiles.json"));

错了。

当我尝试运行它时有

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.SerializationException: Error reading file: data/tiles.json

Caused by: com.badlogic.gdx.utils.SerializationException: Unable to convert value to required type: [
{
    name: Wall,
    symbol: #
},
{
    name: Floor,
    symbol: .
}

我已经阅读了关于 json 文件的 libgdx 文章,但我发现它不清楚...我不明白如何填充数组。请帮我解决这个问题!

最佳答案

你的 json 文件有 ArrayList<Tile>存储在其中并且您正在尝试将其读取为 Tile .

有两种方法可以解决这个问题。

1) 您可以将图 block 集合封装在另一个类中以简化序列化。

2) 读作 ArrayList并稍后转换类型。

ArrayList<JsonValue> list = json.fromJson(ArrayList.class,
                                          Gdx.files.internal("data/tiles.json"));
for (JsonValue v : list) {
    tilesData.add(json.readValue(Tile.class, v));
}

希望这对您有所帮助。

关于java - LibGDX:从 json 文件读取到 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27078410/

相关文章:

java - TextureAtlas 区域到 Texture

java - Spring 集成 DAO 最佳实践

java - 如何读取字符串的各个部分

java - 在 FTP 服务器上递归列出子文件夹

javascript - 使用 jquery Ajax 获取 json 文件的请求

javascript - 如何在 Marklogic JSON 文档中插入多于一个的三元组?

java - 在 libgdx 0.9.7 中绘制表格边框

java - 时钟接龙游戏/聚合

java - JSON 异常 : org. json.JSONException: Unterminated array

java - LibGdx-ViewPort 宽度和高度与某些设备不匹配