首页 > 其他分享 >jsonschema2pojo 基于json schema 生成代码

jsonschema2pojo 基于json schema 生成代码

时间:2022-10-06 21:11:54浏览次数:84  
标签:jsonschema2pojo 代码 maven json jsonschema new schema

jsonschema2pojo 是一个很不错的基于jsonschema 生成代码的包以及工具(maven 扩展)

jsonschema2pojo 特点

  • 支持基本的jsonschema 操作
  • 支持java扩展,比如别名,继承扩展接口
  • 外部jsonschema 文件引用
  • jsr 303 注解支持
  • 自定义时间格式
  • 支持基于代码以及maven 扩展使用

代码模式

 //  基于jackson-module-jsonSchema 生成schema
ObjectMapper jacksonObjectMapper = new ObjectMapper();
JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(jacksonObjectMapper);
JsonSchema schema = schemaGen.generateSchema(MyApp.class);
String schemaString = jacksonObjectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema);
System.out.println(schemaString);
// 基于上边的jsonschema 生成代码
JCodeModel codeModel = new JCodeModel();
GenerationConfig config = new DefaultGenerationConfig() {
    @Override
    public boolean isGenerateBuilders() { // set config option by overriding method
        return true;
    }
};
SchemaMapper mapper = new SchemaMapper(new RuleFactory(config, new Jackson2Annotator(config), new SchemaStore()), new SchemaGenerator());
mapper.generate(codeModel, "Mydemo", "com.appdemo", schemaString);
codeModel.build(Files.createDirectory(Paths.get("demo")).toFile());

maven 扩展模式

支持自定义信息,比如包名,生成builder 模式的java 类

<plugin>
    <groupId>org.jsonschema2pojo</groupId>
    <artifactId>jsonschema2pojo-maven-plugin</artifactId>
    <version>1.1.2</version>
    <configuration>
        <sourceDirectory>${basedir}/src/main/resources/schema</sourceDirectory>
        <targetPackage>com.dalong.types</targetPackage>
        <generateBuilders>true</generateBuilders>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
</plugin>

说明

openmetadata 比较依赖jsonschema2pojo 生成代码,是一个值得参考学习的项目,使用好jsonschema2pojo 可以加速我们项目的开发

参考资料

https://www.jsonschema2pojo.org/
https://github.com/joelittlejohn/jsonschema2pojo/wiki/Getting-Started
https://github.com/joelittlejohn/jsonschema2pojo/wiki/Reference

标签:jsonschema2pojo,代码,maven,json,jsonschema,new,schema
From: https://www.cnblogs.com/rongfengliang/p/16758495.html

相关文章

  • quicklib json序列
    quicklibjson序列quicklib面向MODEL的JSON序列。unitUnit2;///<author>cxg2022-6-14</author>interfaceusesquick.Json.Serializer,Quick.MemoryCache.Seri......
  • openmetadata jsonschema 处理的一些变动
    openmetadata估计是因为quicktype使用复杂费事,最近版本quicktype的集成已经废弃了,都使用jsonschema2pojo了实际上使用jsonschema2pojo对于java项目来说也比较好,毕竟......
  • Android中的JSON详细总结
    1、JSON(JavaScriptObjectNotation)定义:一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得......
  • vue res.data接收到的是字符串的处理方式,先转化成Json格式再解析
    api.postWachPay(param).then(res=>{this.html=res.data;letdata=JSON.parse(res.data)console......
  • 就因为JSON.stringify,我的年终奖差点打水漂了
    本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。前言「欢迎在评论区讨论,掘金官方将在掘力星计划活动结束后,在评论区抽送100份掘金周边,抽奖详情见活动文章」......
  • 【c++基础】从json文件提取数据
    前言标注数据导出文件是json格式的,也就是python的dict格式,需要读取标注结果,可以使用c++或者python,本文使用c++实现的。JsonCpp简介JsonCpp是一种轻量级的数据交换格式,是个跨......
  • java如何将字符串转换为json格式字符串呢?
    转自:http://www.java265.com/JavaJingYan/202206/16540828373607.htmlJSON简介:   JSON(JavaScriptObjectNotation,JS对象简谱)是一种轻量级的数据交换格式。它基......
  • SYS 和 SYSTEM schema
    所有Oracle数据库都包含默认管理帐户。管理帐户具有很高的特权,仅适用于被授权执行诸如启动和停止数据库、管理内存和存储、创建和管理数据库用户等任务的DBA。SYS管理......
  • 一文了解JSON
    目录JSON在JavaScript中的使用。json的定义json的访问json的两个常用方法JSON在在java中的使用javaBean和和json的互转List和和json的互转map和和json......
  • SAP UI5 应用元数据文件 manifest.json 的加载和解析原理讲解试读版
    一套适合SAPUI5初学者循序渐进的学习教程本专栏计划的文章数在​​300​​​篇左右,到​​2022年9月22日​​​为止,目前已经更新了​​133​​​篇,专栏完成度为​​......