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

本文介绍使用程序jsonschema2pojo来自动生成Java的POJO类源文件,本文主要使用maven,其他构建工具请参考官方文档。

jsonschema2pojo 基本介绍

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

  • 支持ant,maven,gradle,命令行和直接的程序调用五种方式来进行java源代码的生成。
  • 它可以通过指定JSON模式(schema)和直接指定JSON文件两种形式来生成Java类,并可以配置生成Jackson1、Jackson2、Gson三个库(对字段)的注解,当然也可以配置不生成注解。
  • 它还可以通过指定字段中的分隔符将如string_number的json字段名转换为驼峰命名的java字段stringNumber
  • 还有其他的一些配置。

这款工具可以说非常强大,可以应付我们大部分的需求了。

该工具提供了一个在线网站,可以通过该网站体验一下:链接

配置

先要在maven项目的pom.xml文件中添加common-lang的依赖:

<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>

然后在maven项目的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.demo.bean</targetPackage>
<outputDirectory>${basedir}/src/main/java</outputDirectory>
<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:生成的(字段)注解样式,有五个可选值:jackson1jackson2gsonmoshi1none,默认是jackson2,一般指定none就可以了,还有比如用fastjson,那也要指定none

生成

直接执行mvn package打包命令就可以进行生成操作了,执行成功后你会在对应的包下面发现生成的java pojo源文件。

说明

已知的问题:

  1. 该程序会对所有的json对象({}包起来的)都进行java文件的生成,暂时没发现可以进行选择性生成的配置。

参考链接:

  1. github主页
  2. 在线体验网址
  3. maven配置文档网址

如有错误,请留言指正,谢谢。

使用maven根据JSON文件自动生成Java POJO类(Java Bean)源文件的更多相关文章

  1. 利用在线工具根据JSon数据自动生成对应的Java实体类

    如果你希望根据JSon数据自动生成对应的Java实体类,并且希望能进行变量的重命名,那么“JSON To Java”一定适合你.(下面的地址需要FQ) https://jsontojava.appsp ...

  2. 文件参数化-utp框架之根据yaml文件自动生成python文件+utp运行用例

    根据yaml文件自动生成python文件 utp框架: bin目录:存放执行文件(run.py) cases目录:存放生成的用例的python文件(该目录下的文件为根据data目录下的测试用例生成的p ...

  3. JAVA自动生成正则表达式工具类

    经过很久的努力,终于完成了JAVA自动生成正则表达式工具类.还记得之前需要正则,老是从网上找吗?找了想修改也不会修改.现在不用再为此烦恼了,使用此生成类轻松搞定所有正则表达式.赶快在同事面前炫一下吧. ...

  4. Linux设备文件自动生成

    第一种是使用mknod手工创建:# mknod <devfilename> <devtype> <major> <minor> 第二种是自动创建设备节点 ...

  5. CCS 6新建文件自动生成注释

    对于CCS6,可以通过配置,达到新建源文件或者头文件时,自动生成适当的注释: 一.新建源文件自动生成配置. 在某个文件夹下右击选择 New - Source File. 点击 Configure,再选 ...

  6. angular js根据json文件动态生成路由状态

    项目上有一个新需求,就是需要根据json文件动态生成路由状态,查阅了一下资料,现在总结一下发出来: 首先项目用到的是angular的UI-路由,所以必须引入angular.js和angular-ui- ...

  7. IntelliJ IDEA 创建的文件自动生成 Author 注释 签名

    IntelliJ IDEA 创建的文件自动生成 Author 注释 签名1.打开 File --> Setting2.找到 Editor --> File and Code Templat ...

  8. Android 自动生成的R类

    资源文件的使用分为在代码中使用和在其他资源文件中引用该资源文件.在我们编译一个Android应用时,Android会自动生成一个R类,在该类中根据不同的资源类型又生成了相应的内部类,该类包含了系统中使 ...

  9. Unity 自动生成组件索引类工具

    Unity 自动生成组件索引类工具 需求由来 我们在写UI类时 需要获取预设中的组件 joystick = transform.Find("joystick"); backgrou ...

随机推荐

  1. pymysql使用心得记录

    -----------更新日志 16.7.29------------- (该记录对应文章<豆瓣电影Top250基本信息抓取  >) 折腾了将近两天才把mysql数据库功能给实现了. 经过 ...

  2. Alamofire源码解读系列(九)之响应封装(Response)

    本篇主要带来Alamofire中Response的解读 前言 在每篇文章的前言部分,我都会把我认为的本篇最重要的内容提前讲一下.我更想同大家分享这些顶级框架在设计和编码层次究竟有哪些过人的地方?当然, ...

  3. 如何使用bootstrap

    前言: 前几天,本想做一个登陆界面,但自己写form表单必然很丑,所以想用下bootstarp框架,之前听别人说bootstrap很牛的样子.但我完全不会bootstrap... 下载&目录 ...

  4. try{} catch(…){} 讨论(转)

    以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常, 今天看了Winhack的帖子才知道,这种方法在VC中其实是靠不住的.例如下面的代码: .try .{ .BYTE* pch ...

  5. iOS 应用关于弥补安全优化问题

    1.log输出会被中奖者截获,暴露信息,影响app得性能 在工程里面的pch文件加入以下代码 // 调试状态 #define LMLog(...) NSLog(__VA_ARGS__) #else / ...

  6. C#研究OpenXML之路(1-新建工作簿文件)

    一.写在开头 一直想沉下心来研究研究OpenXML编程,可是由于公司编程项目一笔接一笔,很难静下来,所以一直是采用的COM操作Excel.现在终于得闲,特将心得历程记录下来. 今天的第一个实例代码是来 ...

  7. C# Task 源代码(2)

    上篇已经讲到Task 的默认的TaskScheduler 为ThreadPoolTaskScheduler. 这时我们回到原来的task 的start方法,在代码最后,调用了 ScheduleAndS ...

  8. Angular2入门-数据绑定

    ▓▓▓▓▓▓ 大致介绍 Angular2中数据绑定的方式默认是以单向方式,数据绑定的方式可以分为: 1.属性绑定和插值表达式 组件类-> 模板 2.事件绑定:模板 -> 组件类 3.双向绑 ...

  9. Java与面向对象之随感(2)

    我们知道Java语言的一大特性就是相比于c语言和c++语言,其更加安全.那么Java安全性的一个重要保证就是它取消了指针,并且坚决反对数组的出界(c++对当数组超出上限但是还进行读写操作时允许的!), ...

  10. PAT 1057

    Stack is one of the most fundamental data structures, which is based on the principle of Last In Fir ...