Java LibGDX:从json文件读取到ArrayList
我需要帮助读取json文件到ArrayList 我有一个json文件:Java LibGDX:从json文件读取到ArrayList,java,json,libgdx,Java,Json,Libgdx,我需要帮助读取json文件到ArrayList 我有一个json文件: [ { "name": "Wall", "symbol": "#", }, { "name": "Floor", "symbol": ".", } ] 我有一门课: public class Tile { public String name; public String symbol; } 我
[
{
"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"));
}
}
这是错误的
当我试着运行它的时候
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
,您正试图将其作为磁贴
读取
有两种方法可以纠正这种情况
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));
}
ArrayList list=json.fromJson(ArrayList.class,
Gdx.files.internal(“data/tiles.json”);
for(JsonValue:list){
add(json.readValue(Tile.class,v));
}
希望这有帮助。Tanmay Patil的回答是正确的,但您可以使用以下方法保存循环:
ArrayList<Tile> board = json.fromJson(ArrayList.class, Tile.class, Gdx.files.internal("data/tiles.json"));
ArrayList board=json.fromJson(ArrayList.class、Tile.class、Gdx.files.internal(“data/tiles.json”);
ArrayList board=json.fromJson(ArrayList.class,Tile.class,
Gdx.files.internal(“data/tiles.json”).readString();
两年后,libgdx发生了一些变化,所以to设法让它工作起来。现在我们必须添加
.readString()
。我一直被困在这里,直到我明白了这一点。你说的“一些问题”是什么意思?编译错误还是运行时错误?你能发吗?我已经编辑了我的帖子。正如我所知,我在将json文件解析到我的数组时出错了。你能告诉我更多关于如何进行类型转换的信息吗?谢谢你的回答!非常感谢,知道它有帮助很有帮助。谢谢,这是非常有用的补充。我只是将最初的JSON加载代码从10行减少到1行。LibGDX非常可爱。我刚刚看到了这篇文章,它与我的问题有些关联。不读取json文件,是否可以将json字符串(在原始问题中发布)写入该文件?我看到类信息也打印在序列化的json文件中,这是我不想要的。我的问题链接:@user2582651我回答了你的问题,希望能对你有所帮助。
ArrayList<Tile> board = json.fromJson(ArrayList.class, Tile.class, Gdx.files.internal("data/tiles.json"));
ArrayList<Tile> board = json.fromJson(ArrayList.class, Tile.class,
Gdx.files.internal("data/tiles.json").readString());