我需要帮助读取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文件有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)); }希望这可以帮助.