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

前端之家收集整理的这篇文章主要介绍了java – LibGDX:从json文件读取到ArrayList前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要帮助读取json文件到ArrayList.

我有json文件

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

我有一个班:

@H_301_4@public class Tile { public String name; public String symbol; }

我有另一个类与ArrayList:

@H_301_4@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,但是我有一些问题.我猜线

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

是错的.

当我尝试运行它

@H_301_4@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并稍后转换类型.

@H_301_4@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相关文章