我正在制作Java游戏,我希望将文件保存为JSON,并且我正在使用JSON.simple库。问题是,当我想读取包含整数,浮点数和其他数字类型的保存文件时,我必须进行类型转换,例如:
JSONObject obj = (JSONObject)parser.parse(scanResult);
player.setName((String) obj.get("name"));
player.setDungeonLevel(((Number) obj.get("dungeonLevel")).intValue());
Number x = (Number) obj.get("x");
Number y = (Number) obj.get("y");
player.setPosition(new Vector2(x.floatValue(), y.floatValue()));
player.setSpeed(((Number) obj.get("speed")).floatValue());
这使得代码看起来非常难看并且难以阅读。在做了一些研究后,我开始认为,我正在使用的库(JSON.simple)可能太简单了? :)。我发现,JSONLib可以保存例如Float,然后将其作为Float读取(这基本上就是我想要的)。
很多人推荐的另一个图书馆是Gson,但我不确定它是否适用于我的情况,因为在某些情况下我只想保存一系列不同的地图图块(如门,墙,地板)它们都有不同的属性)或项目等,而不是一个对象。
我不愿意使用另一个库,因为我必须重写一些现有的代码,而JSONLib有一些依赖项,我在程序中并不是真的想要它。
有没有办法让我坚持使用JSON.simple而不必一直进行类型转换?或者你会建议我换到另一个图书馆,如果是的话,你会推荐什么?
任何帮助将不胜感激:))
答案 0 :(得分:0)
使用Gson肯定会使代码更具可读性,以下是上述示例的外观:
class Player {
private String name;
private String dungeonLevel;
private float x;
private float y;
private float speed;
// setters/getters go here
}
Player player = new Gson().fromJson(scanResult, Player.class);
Vector2 playerPosition = new Vector2(player.getX(), player.getY());