加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:34:27 所属栏目:Java 来源:网络整理
导读:我需要帮助读取json文件到ArrayList. 我有json文件: [ { "name": "Wall","symbol": "#",},{ "name": "Floor","symbol": ".",}] 我有一个班: public class Tile { public String name; public String symbol;} 我有另一个类与ArrayList: public class Data
我需要帮助读取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));
}

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读