Java 从json字符串解析时未调用对象构造函数

Java 从json字符串解析时未调用对象构造函数,java,json,gson,Java,Json,Gson,为什么未调用IACircle构造函数? 这就是我加载Json的方式 BufferedReader br = new BufferedReader(in); LevelDefinition ld = new Gson().fromJson(br, LevelDefinition.class); Json字符串 { "iaCircles": [ { "x": -32.0, "y": -5.0, "ang

为什么未调用
IACircle
构造函数?
这就是我加载Json的方式

BufferedReader br = new BufferedReader(in);
LevelDefinition ld = new Gson().fromJson(br, LevelDefinition.class);
Json字符串

{
    "iaCircles": [
        {
            "x": -32.0,
            "y": -5.0,
            "angle": 0.0,
            "radius": 2.5,
            "density": 0.0,
            "friction": 0.0,
            "restitution": 1.0,
            "textureSelection": "CIRCLE",
            "inflictsDamage": true,
            "fixedRotation":true
        },
        {
            "x": 55.0,
            "y": -5.0,
            "angle": 0.0,
            "radius": 2.5,
            "density": 0.0,
            "friction": 0.0,
            "restitution": 1.0,
            "textureSelection": "CIRCLE",
            "inflictsDamage": true,
            "fixedRotation":true
        }
    ]
}
Java类解析为

public class LevelDefinition {

    private Vector<IACircle> iaCircles;
}

您应该为类定义默认的无参数构造函数。GSON只调用无参数构造函数来初始化类。你有一个带参数的构造函数,这就是为什么不调用它;它创建一个
ObjectConstructor
来初始化。试试这个:

public class IACircle {
    public IACircle () { 
        System.out.println("constructor called, circle");
    }
}

+1.比我快。有关更多信息,请参阅此问题:为什么我仍然可以执行
System.out.println(iaCircles.get(0.csdamage))并输出我在json中提供的值?即使没有参数构造函数called@bobbyrne01如果您不提供无参数构造函数,Gson无论如何都会找到一种方法,使用默认构造函数(无参数)创建一个类,并正确创建对象。但你应该提供它。
public class IACircle {
    public IACircle () { 
        System.out.println("constructor called, circle");
    }
}