Java 从JSON文件加载数字的适当方法

Java 从JSON文件加载数字的适当方法,java,json,serialization,Java,Json,Serialization,我正在制作一个Java游戏,我想将文件保存在JSON中,我正在使用JSON.simple库。问题是,当我想读取包含整数、浮点数和其他数字类型的保存文件时,我必须进行大量的类型转换,例如: JSONObject obj = (JSONObject)parser.parse(scanResult); player.setName((String) obj.get("name")); player.setDungeonLevel(((Number) obj.get("dungeonLevel")).i

我正在制作一个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而不必一直进行类型转换?或者你会建议我换一个图书馆吗?如果是,你会推荐什么?

任何帮助都将不胜感激:)

使用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());

有什么理由它必须是Java的吗?你应该试试Gson。这真的很棒。你能建议我换到另一个库吗(…)你有什么建议吗?我建议用Gson和Jackson做一些测试。我目前与Jackson合作,在代码可读性和性能方面都很好。另外,为了避免您在代码重构方面遇到的问题,我倾向于使用避免在我的代码中直接使用第三方库。@djechlin是的,我忘了提到,我正在用JAVA编写游戏。谢谢您的回复。我真的开始想,我应该使用Gson,但有一点不清楚:如果我只想保存/加载一个对象数组,该怎么办?这是像您的示例中那样简单地保存/加载播放器,还是我应该创建一些对象来保存该数组并将整个对象转换为json?Gson透明地将数组序列化为
List
对象。如果数组是根
Player
对象的成员,则只需向Player对象添加一个List类型的字段即可。如果列表本身是json的根元素,则可以直接加载它,如上所示。