如何在Wildfly中configurationJackson?

我有一个会话Bean与以下方法:

@POST @Consumes("application/x-www-form-urlencoded") @Path("/calculate") @Produces("application/json") public CalculationResult calculate(@FormParam("childProfile") String childProfile, @FormParam("parentProfile") String parentProfile) { ... } 

返回的CalculationResult不能映射到JSON并发生以下exception:

 Caused by: com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class com.test.UniqueName and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)... 

我如何在Wildfly中configurationJackson及其SerializationFeature

“我怎样才能在Wildfly中configurationJackson及其SerializationFeature?

您不需要在Wildfly中configuration它,您可以在JAX-RS应用程序中configuration它。 只需使用ContextResolver来configurationObjectMapper (详情见这里 )。 就像是

 @Provider public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> { private final ObjectMapper mapper; public ObjectMapperContextResolver() { mapper = new ObjectMapper(); mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); } @Override public ObjectMapper getContext(Class<?> type) { return mapper; } } 

如果你还没有Jackson的依赖,就需要这个,就像编译时的依赖关系一样

 <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jackson-provider</artifactId> <version>3.0.8.Final</version> <scope>provided</scope> </dependency> 

如果您正在使用扫描来发现您的资源类和提供程序类,则应自动发现ContextResolver 。 如果你明确地注册了所有的资源和提供者,那么你也需要注册这个。 它应该被注册为一个单身人士。


UPDATE

正如@KozProv在评论中提到的那样,它实际上应该是resteasy-jackson2-provider作为Maven依赖项的artifactId。 -jackson-使用旧的org.codehaus (Jackson 1.x),而-jackson2-使用新的com.fasterxml (Jackson 2.x)。 Wild by默认使用jackson2版本。

Wild 9

的pom.xml

 <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jackson2-provider</artifactId> <version>3.0.8.Final</version> <scope>provided</scope> </dependency> 

Java类

 @com.fasterxml.jackson.annotation.JsonIgnoreProperties(ignoreUnknown = true) public class SomePojo implements Serializable { }