我有一个.json文件,如下所示:
[{
t: 1,
x: 0,
y: 0
},
{
t: 1,
x: 1,
y: 0
}]
我有一节课:
class HexTile {
int x,y,t;
}
我有一个阵列:
Array<HexTile> hexTiles
如何将该文件的内容解析为对象并将它们放入此数组?
答案 0 :(得分:2)
将类名添加到数组元素中,以便Json解析器知道将它们转换为:
[{
class: com.yourpackage.HexTile,
t: 1,
x: 0,
y: 0
},
{
class: com.yourpackage.HexTile,
t: 1,
x: 1,
y: 0
}]
然后你可以像这样加载它们。我认为libgdx的Json解析器总是将ArrayList类用于数组。
Json json = new Json();
ArrayList<HexTile> hexTiles = json.fromJson(ArrayList.class, Gdx.files.internal("myJsonFile.json"));
如果你需要它们作为libgdx数组,我知道转换它的唯一方法是有点难看:
Array<HexTile> arrayTiles = new Array<HexTile>(tiles.toArray(new HexTile[tiles.size()]));
第二种方法 - 使用包装类
此方法可以减少json文件中的混乱。创建一个包装类来保存数组:
public class HexTileArrayWrapper {
public Array<HexTile> array;
}
使用包含它的数组元素构建你的json文件:
{
array:
[{
t: 1,
x: 0,
y: 0
},
{
t: 1,
x: 1,
y: 0
}]
}
然后你可以像这样加载它:
HexTileArrayWrapper arrayWrapper = json.fromJson(HexTileArrayWrapper.class, file);
Array<HexTile> arrayTiles = arrayWrapper.array;