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

前端之家收集整理的这篇文章主要介绍了java – LibGDX:从json文件读取到ArrayList前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要帮助读取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)您可以将tile的集合封装在另一个类中,以简化序列化.

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));
}

希望这可以帮助.

原文链接:https://www.f2er.com/java/122082.html

猜你在找的Java相关文章