当前位置: 首页 > 知识库问答 >
问题:

如何自定义swagger代码生成忽略空值的模型

秋阳荣
2023-03-14

我正在使用swagger-codgen为我的spring boot应用程序生成java模型类,并将它们序列化为json。默认情况下,这些模型都包含带有空值的可选属性。

我想为spring配置swagger codgen,以便在所有类的顶部包含此注释:@JsonInclude(include.NON_NULL),以便在序列化的json中不包含空值属性。

我怎样才能做到这一点?是否有配置选项,或者我必须手动扩展 spring 代码生成?

共有3个答案

蒋奕
2023-03-14

如果你没有申请。yaml或应用程序。属性,但确实有springxml配置,那么添加它也会起到作用
这不会将注释放在文件中,但具有相同的效果。

<mvc:annotation-driven>
    <mvc:message-converters>
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="objectMapper">
                <bean class="com.fasterxml.jackson.databind.ObjectMapper">
                    <property name="serializationInclusion" value="NON_NULL"/>
                </bean>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

请注意,这应该添加到使用您生成的代码的应用程序中,该应用程序不一定是生成它的应用程序。

姚才捷
2023-03-14

实现这一点的一种方法是通过添加注释来修改Java Spring的pojo模板。此模板用于生成模型。

酆君墨
2023-03-14

您可以在<code>应用程序中进行配置。yaml:

spring:
   jackson:
      default-property-inclusion: NON_NULL
 类似资料:
  • 这类似于这个问题,但我们用Gradle代替。假设我们在构建脚本中直接使用jOOQ的代码生成,正如文档中所描述的那样。 有两个问题。首先,我们将向生成器配置中添加一个新的策略,这应该很简单: 然而,如果我们打印得到的XML配置,名称元素就会被神秘地省略(也会被悄悄地省略): 其次,可以使用什么机制来预编译生成器策略类()并使其在构建脚本的类路径中可用?这里有一个可能的问题:策略代码依赖于jOOQ的c

  • 我们有一个用例,在这个用例中,我们定义了许多不同的RPC。我们使用google的protobuf java生成了一个基于java的grpc存根代码 要转换为like 在java生成的代码中,每个原始服务应该有2个服务。我们只希望最终java生成的代码具有2个服务,解析器可能会/可能不会更新原始服务。原型文件。 当前protoc是否可以进行这种定制?我们可以扩展插件并编写我们的插件吗-

  • 使用jOOQ,我可能希望将jOOQ代码生成器与Maven和自定义生成器策略结合使用。看起来这可以这样做(省略不相关的部分): 上面的配置描述了问题。jOOQ的代码生成器挂钩到Maven生命周期的生成目标,它发生在生命周期的编译目标之前。但是,对于代码生成,它需要一个预编译的自定义策略类,否则我会得到一个。如何使用Maven解决这个问题?我可以在执行目标之前编译单个类吗?

  • 我正在尝试从多个 WSDL 文件生成 Axis2 (v1.6.1) Web 服务客户端代码,以便我可以在单个项目中拥有多个 Web 服务客户端。我正在使用 Ant 通过代码生成任务生成源代码。 因此,我需要使用自定义命名空间来打包映射,以使每个 Web 服务客户端的代码与其他客户端的代码分开,以避免冲突。 下面是一个示例 WSDL 文件中的命名空间: 我已经设法将生成代码的主体放入适当的包中。我已

  • 我正在努力创建rest客户端,我将调用一个API来提供这个大的json输出。我想知道如何通过输入这个json来自动创建Pojo类来晃动代码gen,并让它为我创建我的pojo类,这将节省手动时间。这是我尝试过的 要为生成PHP客户端,请执行以下操作:http://petstore.swagger.io/v2/swagger.json,请运行以下命令: (如果您使用的是Windows,请将最后一个命令

  • 我正在使用Swagger codegen创建用于Spring REST服务器的Java模型,并且想知道如何让Swagger将每个模型声明为JPA实体。 我使用< code > swagger-codegen-maven-plugin 生成如下代码: 正如我现在所拥有的,这是生成的缩写 java 代码: 如何让 Swagger 添加 @Entity 和 @Id JPA 注释,如下所示? 这样,为了让