我正在解析json,并且有一个类具有另一个类类型的参数:第一个从我所阅读和理解的内容来看,Jackson要反序列化json,它需要在每个类上都有一个默认的无参数构造函数。然而,不知何故,它只需要Vehicle类定义一个无参数构造函数就可以很好地反序列化。这是怎么回事?为什么两个类都不需要定义无参数的ctor?
Vehicle
guicsvcw1#
默认情况下,Jackson不会使用带参数的构造函数,您应该使用@JsonCreator注解通知它这样做。
@JsonCreator
注意:如果您没有在类中声明任何构造函数,Java将为您提供一个No Args构造函数。
默认情况下,Jackson尝试使用无参数构造函数,在VehicleInfo中,您使用@AllArgsConstructor声明一个带参数的构造函数,就像在VehicleInfo类中没有NoArgsConstructor一样。在Vehicle类中,有两个构造函数,一个带有所有参数,另一个不带参数,Jackson将使用不带参数的那个。
VehicleInfo
@AllArgsConstructor
1条答案
按热度按时间guicsvcw1#
默认情况下,Jackson不会使用带参数的构造函数,您应该使用
@JsonCreator
注解通知它这样做。注意:如果您没有在类中声明任何构造函数,Java将为您提供一个No Args构造函数。
默认情况下,Jackson尝试使用无参数构造函数,在
VehicleInfo
中,您使用@AllArgsConstructor
声明一个带参数的构造函数,就像在VehicleInfo
类中没有NoArgsConstructor一样。在
Vehicle
类中,有两个构造函数,一个带有所有参数,另一个不带参数,Jackson将使用不带参数的那个。