gpt4 book ai didi

java - 如何在 Wildfly 中配置 Jackson?

转载 作者:太空狗 更新时间:2023-10-29 23:03:09 25 4
gpt4 key购买 nike

我有一个 session 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,出现如下异常:

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 中配置 Jackson 及其 SerializationFeature

最佳答案

"How can I configure Jackson and its SerializationFeature in Wildfly?"

你不需要在Wildfly中配置它,你可以在JAX-RS应用程序中配置它。只需使用 ContextResolver配置 ObjectMapper(参见更多信息 here)。有点像

@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 应该会被自动发现。如果您明确注册所有资源和提供者,那么您还需要注册这一个。它应该注册为单例。


更新

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

关于java - 如何在 Wildfly 中配置 Jackson?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28307646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com