使用jsonschema2pojo根据JSON文件自动生成Java POJO类(Java Bean)源文件

本文介绍了如何使用jsonschema2pojo工具根据JSON文件自动生成Java POJO类,主要关注通过maven plugin的方式。该工具支持多种生成方式,包括命令行、ant、gradle等,可以配置生成Jackson、Gson等库的注解,并能进行驼峰命名转换。此外,文章还提及了在线转换网站和在pom.xml中配置maven plugin的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先github地址wiki如点击打开链接

本文主要介绍根据jsonschema2pojo工具来自动生成java pojo(java bean,DTO),使用maven plugin的方式来完成java bean的生成,如需其它方式可以访问官网进行尝试。

一、jsonschema2pojo 基本介绍

jsonschema2pojo是一款用于根据JSON文件生成Java bean类的工具,主要特性:

目前支持5钟方式自动生成,本文是讲述的第一种:
使用jsonschema2pojo-maven-plugin的maven插件
通过命令行使用jsonschema2pojo-cli
使用jsonschema2pojo-ant
gradle插件使用gradle-jsonschema2pojo
从你的代码(嵌入式)使用jsonschema2pojo-core
它可以通过指定JSON模式(schema)和直接指定JSON文件两种形式来生成Java类,并可以配置生成Jackson1、Jackson2、Gson三个库(对字段)的注解,当然也可以配置不生成注解。
它还可以通过指定字段中的分隔符将如string_number的json字段名转换为驼峰命名的java字段stringNumber。

这款工具非常的强大,虽然还有其它工具,但觉得使用了这个工具之后感觉very good!

该工具提供了一个在线网站转换:点击打开链接

二、配置

目前生成的类型取决于Commons Lang for equals,hashCode和toString。

在pom.xml添加如下依赖

  <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.5.4</version>
        </dependency>
生成类的定位在java 6 或更高版本

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
然后在pom.xml 文件plugins标签中新增如下配置:

<plugin>
    <groupId>org.jsonschema2pojo</groupId>
    <artifactId>jsonschema2pojo-maven-plugin</artifactId>
    <version>0.4.34</version>
    <configuration>
        <sourceDirectory>${basedir}/src/main/resources</sourceDirectory>   <!--资源目录-->
        <targetPackage>com.example.bean</targetPackage>
        <outputDirectory>${basedir}/src/main/java</outputDirectory>  <!--输出java bean文件的目录-->
        <addCompileSourceRoot>false</addCompileSourceRoot>
        <sourceType>json</sourceType>	<!--资源类型-->
        <annotationStyle>none</annotationStyle>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
</plugin>

说明:

主要关注configuration节点下面的配置项:

sourceDirectory:json文件所在的目录,会将该目录下所有json进行转换,不支持指定单个文件,如果不想全部转换,可以添加一个excludes节点。如:

<excludes>
<exclude>init.json</exclude>
</excludes>
targetPackage:生成的Java pojo类目标包名。
outputDirectory:生成Java pojo类的(根)目录,换句话说,源文件最终目录为此目录+包目录,注意,此值默认为target\java-gen,官方配置中并没有该默认值,如果成功生成后发现找不到源文件,看一看是不是这个原因。
addCompileSourceRoot:是否将输出目录作为项目的源码根目录。
sourceType:json格式,两个可选值,jsonschema:json模式和json:json文件,默认为jsonschema,不过我们一般是希望直接使用json文件生成,所以指定为json`。

annotationStyle:生成的(字段)注解样式。

使用mvn pageckage命令或使用如下图plugins


参考链接:

  1. maven配置文档网址



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值