根据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. mysql命令参数详解

    一,MySQL命令行参数 Usage: mysql [OPTIONS] [database] //命令方式 -?, --help //显示帮助信息并退出 -I, --help //显示帮助信息并退出  ...

  2. js的搜索遍历精讲

    搜索算法应该算是每种算法的重点与难点了,本文将讲解JavaScript中的各种常用的遍历算法:希望对大家有所帮助. 深度优先遍历顺序:1245367      广度优先遍历:1234567 1.深度优 ...

  3. 在VB6/VBA中使用正则表达式

    一.关于起因 最近在Office的QQ群里问如何在一串字符串中提取数值并加总的问题.如果使用正则表达式可以非常迅速的解决这个问题. 那么今天我就探讨一下在VB6/VBA中使用正则表达式的方法及代码,另 ...

  4. 实现QQ、微信、新浪微博和百度第三方登录(Android Studio)

    前言: 对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享: 各大开放平台注册账户获取AppK ...

  5. 玩转 SSH 目录

    在做一个新的项目的时候,需要重新搭建一个项目. 于是趁着这个机会把之前学的几个框架的搭建都写一写,整理一下,同时也可以给大家一些参考.何乐而不为叻. 在这个系列中, 我将使用 IntelJ IDEA ...

  6. Math.pow用法及实现探究

    pow函数在java.lang.Math类中,是求次方的函数,定义为: public static double pow(double a, double b): 即求a的b次方,例如: public ...

  7. Activity间传递数据

     1.从当前的Activity传递数据到下一个Activity: (1)发送方(当前的Activity): Bundle bundle = new Bundle(); bundle.putString ...

  8. ZEROC ICE 跨平台间程序调用 java版

    前言: 本来建博客是为了和大家分享一些前端的开发经验和心得呢,但是阴差阳错,第一篇技术博客确实关于跨平台,跨语言服务端调用的解决方案---ZEROC ICE. 最近一个项目涉及到java.python ...

  9. 简聊iOS支付集成(支付宝和微信支付)

    一.支付集成是什么 1.现在大部分app都有快捷支付功能,支付集成将第三方支付平台集成到自己的项目中,能够完成自己项目中的支付功能, 二.支付集成的使用 <1>.支付宝: 下载SDK和De ...

  10. 用SourceTree轻松Git项目图解

    这篇文档的目的是:让使用Git更轻松. 看完这篇文档你能做到的是: 1.简单的用Git管理项目. 2.怎样既要开发又要处理发布出去的版本bug情况. SourceTree是一个免费的Git图形化管理工 ...