首先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
参考链接: