我需要帮助阅读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文章,但我发现不清楚.我不知道怎么填充数组。拜托,帮我处理这个案子!
发布于 2014-11-22 18:31:18
json文件中存储了ArrayList<Tile>,您正在尝试将它作为Tile读取。
有两种方法可以纠正这种情况。
1)您可以将瓷砖集合封装在另一个类中,以简化序列化。
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));
}希望这能有所帮助。
发布于 2015-05-24 13:46:28
Tanmay Patil的回答是正确的,但您可以使用以下方法保存循环:
ArrayList<Tile> board = json.fromJson(ArrayList.class, Tile.class, Gdx.files.internal("data/tiles.json"));发布于 2018-05-16 00:13:01
ArrayList<Tile> board = json.fromJson(ArrayList.class, Tile.class,
    Gdx.files.internal("data/tiles.json").readString());两年来,libgdx发生了一点变化,所以设法让它发挥作用。现在我们必须添加.readString()。我被困住了直到我弄明白了。
https://stackoverflow.com/questions/27078410
复制相似问题