json - Swagger @QueryParam 导致错误 dropwizard

标签 json jackson swagger dropwizard

我添加了@QueryParam 作为我的 REST 注释的一部分,但是当我与 swagger 集成时,它会在生成 swagger JSON 时导致以下错误:

Exception in thread "main" java.lang.IllegalArgumentException: Unrecognized Type: [null]
    at com.fasterxml.jackson.databind.type.TypeFactory._constructType(TypeFactory.java:406)
    at com.fasterxml.jackson.databind.type.TypeFactory.constructType(TypeFactory.java:354)
    at com.fasterxml.jackson.databind.ObjectMapper.constructType(ObjectMapper.java:1187)
    at com.wordnik.swagger.jackson.ModelResolver.resolveProperty(ModelResolver.java:62)
    at com.wordnik.swagger.converter.ModelConverterContextImpl.resolveProperty(ModelConverterContextImpl.java:59)
    at com.wordnik.swagger.jackson.ModelResolver.resolveProperty(ModelResolver.java:160)
    at com.wordnik.swagger.jackson.ModelResolver.resolveProperty(ModelResolver.java:62)
    at com.wordnik.swagger.converter.ModelConverterContextImpl.resolveProperty(ModelConverterContextImpl.java:59)
    at com.wordnik.swagger.converter.ModelConverters.readAsProperty(ModelConverters.java:71)
    at com.wordnik.swagger.jaxrs.DefaultParameterExtension.extractParameters(DefaultParameterExtension.java:49)
    at com.wordnik.swagger.jersey.SwaggerJersey2Jaxrs.extractParameters(SwaggerJersey2Jaxrs.java:100)
    at com.wordnik.swagger.jaxrs.Reader.getParameters(Reader.java:542)
    at com.wordnik.swagger.jaxrs.Reader.parseMethod(Reader.java:519)
    at com.wordnik.swagger.jaxrs.Reader.read(Reader.java:155)
    at com.wordnik.swagger.jaxrs.Reader.read(Reader.java:64)
    at com.wordnik.swagger.jaxrs.Reader.read(Reader.java:55)
    at com.wordnik.swagger.jaxrs.config.BeanConfig.setScan(BeanConfig.java:148)

谁知道怎么解决?是依赖错误吗?

我正在使用 swagger com.wordnik swagger-jersey2-jaxrs 版本 1.5.1-M2。有什么想法吗?

额外的方法细节

    @GET
    @Path("/stuff/test")
    @ApiOperation(value = "Get some data", notes = "Returns some data", response = Existing.class, responseContainer = "List")
    @ApiResponses(value = { @ApiResponse(code = 404, message = "some error message") })
    @Timed
    public Response getData(
            @ApiParam(value = "filter", required = false, name = "filter") @QueryParam("filter") Optional<String> filterParam)
            throws Exception {
//codes here
}

最佳答案

当我忘记在 Application.run 方法中添加以下映射细节时,我遇到了类似的错误:

environment.getObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL);

如果没有这个设置,空值的映射失败,这可能对应你的Optional。

关于json - Swagger @QueryParam 导致错误 dropwizard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29786377/

相关文章:

django - 带有 Django drf 的 Openapi 3

Python 3 : How to compare two big files fastest?

javascript - 我们需要更深入 - 在 Vanilla Javascript 中使用 foreach 循环深度访问 JSON 和数组

javascript - JSON 文件已正确获取,但获取的数据未显示在控制台日志中

java - 如何配置 Jackson ObjectMapper 以仅显示白名单属性?

spring-boot - Swagger UI 试试吧!不适用于 Kubernetes 入口

java - Jersey JAX-RS,Swagger - 生成 swagger.json 但没有 UI

json - 如何使用 Jersey 从 JSON 输出中省略 @XmlRootElement?

java - spring中如何使用jackson代替JdkSerializationRedisSerializer

json - 在 Spring MVC 4 中是否有可能将 bool 值作为 JSON 返回?