Java代码在运行时通常无法访问参数名称(因为它被编译器删除),因此如果您需要该功能,则需要使用Java 8的内置功能或使用诸如ParaNamer之类的库来获取访问权限 它。
因此,为了在使用Jackson时不必使用构造函数参数的注释,您可以使用这两个Jackson模块中的任何一个:
杰克逊模块参数名称
使用Java 8时,此模块允许您获取无注释的构造函数参数。要使用它,首先需要注册模块:
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new ParameterNamesModule());
然后使用-parameters标志编译代码:
javac -parameters ...
链接:[https://github.com/FasterXML/jackson-modules-java8/tree/master/parameter-names]
杰克逊模块-paranamer
另一个只需要您注册模块或配置注释内省(但不是注释中指出的两者)。 它允许您在1.8之前的Java版本上使用无注释的构造函数参数。
ObjectMapper mapper = new ObjectMapper();
// either via module
mapper.registerModule(new ParanamerModule());
// or by directly assigning annotation introspector (but not both!)
mapper.setAnnotationIntrospector(new ParanamerOnJacksonAnnotationIntrospector());
链接:[https://github.com/FasterXML/jackson-modules-base/tree/master/paranamer]