Json Schema 及 JsonSchema2pojo ma
2020-04-02 本文已影响0人
coderrrrrrrrr
Json Schema
Json Schema是一种json定义格式,允许你自己定义json的注释和验证json文本。
Json Schema
- 描述现有数据格式。
- 干净的人类和机器可读的文档。
- 完整的结构验证,有利于自动化测试。
- 完整的结构验证,可用于验证客户端提交的数据。
Json schema 格式
参照 https://blog.csdn.net/silence_xiao/article/details/81303935
官网 http://json-schema.org/understanding-json-schema/basics.html
JsonSchema2pojo
使用Json Schema生成POJO(Plain Ordinary Java Object 简单的Java对象)的插件。
The Maven plugin
配置方法:
- 1.配置
pom.xml
引入jsonschema2pojo-maven-plugin
并设置goal为generate
.
<plugins>
<plugin>
<groupId>org.jsonschema2pojo</groupId>
<artifactId>jsonschema2pojo-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<sourceDirectory>${basedir}/src/main/resources/schema</sourceDirectory>
<targetPackage>com.example.types</targetPackage>
</configuration>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
- 2.设置编译环境为Java 6及以上
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
- 3.设置依赖包,可以选用Jackson、FastJson或者Gson。
<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>
- 4.以上配置,即可在编译时,自动把
${basedir}/src/main/resources/schema
目录下定义的Json Schema生成相关的Class文件到com.example.types
包下。
Maven plugin其他配置
- 1.输出java文件到指定目录
<outputDirectory>...</outputDirectory>
.
<plugin>
<groupId>org.jsonschema2pojo</groupId>
<artifactId>jsonschema2pojo-maven-plugin</artifactId>
<version>0.4.37</version>
<configuration>
<sourceDirectory>${basedir}/src/main/resources/schema</sourceDirectory>
<targetPackage>cn.csg.common.vo</targetPackage>
<outputDirectory>${basedir}/src/main/java</outputDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
这个配置可以直接生成java文件,在Idea环境编码时,其他项目无需在引用lib指向此项目的classes文件夹,只需要配置对此项目的依赖。
- 2.为POJO生成builder方法
<generateBuilders>true</generateBuilders>
。
<plugin>
<groupId>org.jsonschema2pojo</groupId>
<artifactId>jsonschema2pojo-maven-plugin</artifactId>
<version>0.4.37</version>
<configuration>
<sourceDirectory>${basedir}/src/main/resources/schema</sourceDirectory>
<targetPackage>cn.csg.common.vo</targetPackage>
<generateBuilders>true</generateBuilders>
<outputDirectory>${basedir}/src/main/java</outputDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
设置后,生成builder。这个builder可以简单的在一行初始化一个对象:
MyObject o = new MyObject().withFoo("foo").withBar("bar").withBaz("baz");
- 3.一个陷阱.
不要设置此参数<sourceType>json</sourceType>
!
其他
关于Schema定义其他特性 https://github.com/joelittlejohn/jsonschema2pojo/wiki/Reference
关于JsonSchema2pojo除Maven的其他插件和使用方法 https://github.com/joelittlejohn/jsonschema2pojo/wiki/Getting-Started#the-maven-plugin