为什么Jackson在反序列化时不要求所有类都包含@NoArgsConstructor?

axzmvihb  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(195)

我正在解析json,并且有一个类具有另一个类类型的参数:
第一个
从我所阅读和理解的内容来看,Jackson要反序列化json,它需要在每个类上都有一个默认的无参数构造函数。然而,不知何故,它只需要Vehicle类定义一个无参数构造函数就可以很好地反序列化。
这是怎么回事?为什么两个类都不需要定义无参数的ctor?

guicsvcw

guicsvcw1#

默认情况下,Jackson不会使用带参数的构造函数,您应该使用@JsonCreator注解通知它这样做。

注意:如果您没有在类中声明任何构造函数,Java将为您提供一个No Args构造函数。

默认情况下,Jackson尝试使用无参数构造函数,在VehicleInfo中,您使用@AllArgsConstructor声明一个带参数的构造函数,就像在VehicleInfo类中没有NoArgsConstructor一样。
Vehicle类中,有两个构造函数,一个带有所有参数,另一个不带参数,Jackson将使用不带参数的那个。

相关问题