Java 使用libgdx反序列化json时调用对象构造函数

Java 使用libgdx反序列化json时调用对象构造函数,java,json,libgdx,Java,Json,Libgdx,为什么在反序列化过程中没有调用player的my objects构造函数?有没有一种方法可以使用这种方法调用构造函数 使用com.badlogic.gdx.utils.json将json加载到java对象中 LevelModel ld = new Json(). fromJson(LevelModel.class, Gdx.files.internal("levels/level1.json")); setLevel(new Level(ld)); { "gravity": {

为什么在反序列化过程中没有调用
player
的my objects构造函数?有没有一种方法可以使用这种方法调用构造函数

使用
com.badlogic.gdx.utils.json
将json加载到java对象中

LevelModel ld = new Json().
    fromJson(LevelModel.class, Gdx.files.internal("levels/level1.json"));
setLevel(new Level(ld));
{
    "gravity": {
        "x": 0.0,
        "y": 0.0
    },

    "sounds": [
        BGMUSIC
    ],

    "player": {
        "maxSpeed": 10.0
    }
}
这是我的
JSON

LevelModel ld = new Json().
    fromJson(LevelModel.class, Gdx.files.internal("levels/level1.json"));
setLevel(new Level(ld));
{
    "gravity": {
        "x": 0.0,
        "y": 0.0
    },

    "sounds": [
        BGMUSIC
    ],

    "player": {
        "maxSpeed": 10.0
    }
}
LevelModel.java
如下所示

public class LevelModel {

    private Vector2 gravity;
    private Vector<AudioCollection> sounds = new Vector<AudioCollection>();
    private Character player;

    // with getters/setters for each ..
}

默认情况下,libgdxjson使用反射在反序列化时生成实例。因此,它将创建一个空对象,然后向其中添加字段值。设置玩家最大速度的构造函数将不会被调用

如果您需要在这里执行一些奇特的逻辑,您可以使用
Json.Serializable
编写自己的反序列化逻辑,如下所述