You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spring Boot中使用jsonschema2pojo排除JSON Schema中的指定字段?

解决JSON Schema生成POJO时排除字段的问题

针对jsonschema2pojo的临时解决方案

虽然jsonschema2pojo官方不支持直接排除字段,但可以通过以下几种方式绕过:

1. 预处理JSON Schema文件

直接复制原始Schema,手动删除不需要的字段,用修改后的Schema作为生成POJO的输入。如果需要自动化,可借助Maven的maven-resources-plugin配合文本替换工具(如sed),在构建阶段动态移除目标字段。

2. 自定义注解生成器

利用jsonschema2pojo的扩展机制,给Schema中要排除的字段添加自定义属性,再编写自定义Annotator自动给生成的字段加上@JsonIgnore注解:

步骤1:在JSON Schema中标记要排除的字段

{
  "type": "object",
  "properties": {
    "id": {"type": "string"},
    "sensitiveField": {
      "type": "string",
      "x-ignore": true
    }
  }
}

步骤2:编写自定义Annotator类

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.sun.codemodel.JDefinedClass;
import com.sun.codemodel.JFieldVar;
import org.jsonschema2pojo.AbstractAnnotator;
import org.json.JSONObject;

public class IgnoreFieldAnnotator extends AbstractAnnotator {
    @Override
    public void propertyField(JFieldVar field, JDefinedClass clazz, String propertyName, JSONObject propertyNode) {
        if (propertyNode.has("x-ignore") && propertyNode.getBoolean("x-ignore")) {
            field.annotate(JsonIgnore.class);
        }
    }
}

步骤3:在Maven插件中配置自定义Annotator

<plugin>
    <groupId>org.jsonschema2pojo</groupId>
    <artifactId>jsonschema2pojo-maven-plugin</artifactId>
    <version>1.2.1</version>
    <configuration>
        <sourceDirectory>${project.basedir}/src/main/resources/schemas</sourceDirectory>
        <targetPackage>com.example.pojo</targetPackage>
        <annotator>com.example.IgnoreFieldAnnotator</annotator>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
</plugin>

3. 生成后批量修改

如果上述方法都嫌麻烦,也可以在POJO生成后,用脚本(如Java反射、Groovy脚本)批量给指定字段添加@JsonIgnore注解,不过这种方式维护性较差,仅适合临时场景。

支持字段排除的替代库

如果不想折腾workaround,可以考虑这些原生支持字段过滤的库:

  • OpenAPI Generator:若你的JSON Schema遵循OpenAPI规范,该工具的Maven插件可通过excludeFields或excludeModels配置项直接排除指定字段或模型,配置灵活且功能强大。
  • Apache Avro:虽主要用于Avro Schema,但也支持JSON Schema转POJO,可通过Schema定义时的字段配置实现排除(如标记字段为废弃或不生成)。
  • Codegen4j:轻量级代码生成工具,支持JSON Schema转POJO,提供字段包含/排除的配置选项,适合简单场景。

内容的提问来源于stack exchange,提问作者sub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 15:57:20