IntelliJ IDEA开发工具插件GsonFormat插件安装使用_idea gsonformat-程序员宅基地

技术标签: 开发插件  IntelliJ-idea插件  工具  intellij-idea  

今天给大家介绍一款很实用的GsonFormat插件,GsonFormat插件能够将我们的json格式数据生成对应的实体类,层级关系通过内部类来嵌套,这个工具有时候是很实用的,例如以前公司在对接第三方接口的时候,他们通常提供的入参形式是json形式,但是对于java来说,我们为了方便赋值和接收三方的值,要将其转成对象,所以这个时候我们就需要创建一个对象,但是如果json参数比较多,很容易出错,这个工具就用到了,完美解决我们的机械操作问题。下面来介绍如何安装以及如何使用。

安装插件

和安装其他插件方式相同,Mac在Preferences ->》plugins

输入GsonFormat,如下图所示,点击Install 下载后点击OK,会提示重启,点击重新启动则可。

使用方式

 先构造一个正确JSON格式数据,如下

{
    "acIdttbPressFilterConfEntities": [],
    "acIdttbPressNodeConfEntityList": [{
        "acComTransRuleDefnEntity": {
            "acComTransRuleDetailEntityList": [{
                "detailSort": 1,
                "effectiveTime": -9223372036854776000,
                "exeConditionExps": "",
                "expirationTime": 9223372036854776000,
                "ruleDefnId": 529,
                "targetPath": ""
            }, {
                "detailSort": 2,
                "effectiveTime": -9223372036854776000,
                "exeConditionExps": "",
                "expirationTime": 9223372036854776000,
                "ruleDefnId": 529,
                "targetPath": "",
                "targetValueExps": ""
            }],
            "effectiveTime": -9223372036854776000,
            "expirationTime": 9223372036854776000,
            "id": 529
        },
        "comTransRuleDefnId": 529,
        "effectiveTime": -9223372036854776000,
        "expirationTime": 9223372036854776000,
        "id": 1240,
        "nodeType": "common_transfer_rule",
        "pressId": 361,
        "stdBillOper": "",
        "stdBillType": ""
    }],
    "id": 361,
    "pressColId": 0,
    "pressToNormalFunctionBean": "",
    "runInStyles": 2,
    "taskId": 0

新建一个类:CurrentRecognised,该插件有快捷键,Mac是option + s 即可弹出下面框,但是如果你本身工具已经存在该快捷键,那么可以该快捷键会失效,这种情况下,要通过在该类中,右键,在弹出的对话框中选择Generate,选择点击后会弹出GET、SET等,我们选择GsonFormat,如下图

 

 Format

将我们提前准备好的JSON数据,复制到框中,在对话框的右上角,还可以进行格式化

 Setting

 在右下角有个Setting按钮,点开后,弹出如下对话框

默认情况下Convert Library 选项是Other ,生成的对象是get set形式,我们可以选择其他选项,例如Lombok,那么会将生成的对象带有Lombok的形式,代码看起来比较整洁,其他选项大家自己体验吧,功能还是有一些的。点击Ok后

我们能修改字段类型、映射后的字段名称,例如我们将 第一个字段id 修改成newId,点击OK后,生成的代码如下


@NoArgsConstructor
@Data
public class CurrentRecognised {


    /**
     * acIdttbPressFilterConfEntities : []
     * acIdttbPressNodeConfEntityList : [{"acComTransRuleDefnEntity":{"acComTransRuleDetailEntityList":[{"detailSort":1,"effectiveTime":"-9223372036854776000","exeConditionExps":"","expirationTime":"9223372036854776000","ruleDefnId":529,"targetPath":""},{"detailSort":2,"effectiveTime":"-9223372036854776000","exeConditionExps":"","expirationTime":"9223372036854776000","ruleDefnId":529,"targetPath":"","targetValueExps":""}],"effectiveTime":"-9223372036854776000","expirationTime":"9223372036854776000","id":529},"comTransRuleDefnId":529,"effectiveTime":"-9223372036854776000","expirationTime":"9223372036854776000","id":1240,"nodeType":"common_transfer_rule","pressId":361,"stdBillOper":"","stdBillType":""}]
     * id : 361
     * pressColId : 0
     * pressToNormalFunctionBean : 
     * runInStyles : 2
     * taskId : 0
     */

    private int newId;
    private int pressColId;
    private String pressToNormalFunctionBean;
    private int runInStyles;
    private int taskId;
    private List<?> acIdttbPressFilterConfEntities;
    private List<AcIdttbPressNodeConfEntityListBean> acIdttbPressNodeConfEntityList;

    @NoArgsConstructor
    @Data
    public static class AcIdttbPressNodeConfEntityListBean {
        /**
         * acComTransRuleDefnEntity : {"acComTransRuleDetailEntityList":[{"detailSort":1,"effectiveTime":"-9223372036854776000","exeConditionExps":"","expirationTime":"9223372036854776000","ruleDefnId":529,"targetPath":"","targetValueExps":""},{"detailSort":2,"effectiveTime":"-9223372036854776000","exeConditionExps":"","expirationTime":"9223372036854776000","ruleDefnId":529,"targetPath":"","targetValueExps":""}],"effectiveTime":"-9223372036854776000","expirationTime":"9223372036854776000","id":529}
         * comTransRuleDefnId : 529
         * effectiveTime : -9223372036854776000
         * expirationTime : 9223372036854776000
         * id : 1240
         * nodeType : common_transfer_rule
         * pressId : 361
         * stdBillOper : 
         * stdBillType : 
         */

        private AcComTransRuleDefnEntityBean acComTransRuleDefnEntity;
        private int comTransRuleDefnId;
        private String effectiveTime;
        private String expirationTime;
        private int id;
        private String nodeType;
        private int pressId;
        private String stdBillOper;
        private String stdBillType;

        @NoArgsConstructor
        @Data
        public static class AcComTransRuleDefnEntityBean {
            /**
             * acComTransRuleDetailEntityList : [{"detailSort":1,"effectiveTime":"-9223372036854776000","exeConditionExps":"","expirationTime":"9223372036854776000","ruleDefnId":529,"targetPath":""},{"detailSort":2,"effectiveTime":"-9223372036854776000","exeConditionExps":"","expirationTime":"9223372036854776000","ruleDefnId":529,"targetPath":"","targetValueExps":""}]
             * effectiveTime : -9223372036854776000
             * expirationTime : 9223372036854776000
             * id : 529
             */

            private String effectiveTime;
            private String expirationTime;
            private int id;
            private List<AcComTransRuleDetailEntityListBean> acComTransRuleDetailEntityList;

            @NoArgsConstructor
            @Data
            public static class AcComTransRuleDetailEntityListBean {
                /**
                 * detailSort : 1
                 * effectiveTime : -9223372036854776000
                 * exeConditionExps : 
                 * expirationTime : 9223372036854776000
                 * ruleDefnId : 529
                 * targetPath : 
                 * targetValueExps : 
                 */

                private int detailSort;
                private String effectiveTime;
                private String exeConditionExps;
                private String expirationTime;
                private int ruleDefnId;
                private String targetPath;
                private String targetValueExps;
            }
        }
    }
}

 可以看到确实将id替换成了newId,这个插件在一些特定场合还是比较实用的,大家觉得如何呢

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zanpengfei/article/details/124461273

智能推荐

树莓派相机操作 —— luvcview 的安装、raspistill:摄像头命令_luvcview 拍照-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏16次。MMAL (Multimedia Abstraction Layer)0. 图像及视频操作RaspiCam Documentation1. 运行树莓派配置工具&amp;amp;gt;&amp;amp;gt; sudo raspi-config2. root 登陆 sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如hal..._luvcview 拍照

apache-tomcat部署问题总结_找不到tld文件。考虑将jar添加到catalina_base/conf/catalina.prop-程序员宅基地

文章浏览阅读1.9k次。apache-tomcat部署问题总结来源:oschina 链接:https://my.oschina.net/u/3204029/blog/4314733@Tomcat启动项目警告: org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD…问题描述:org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记_找不到tld文件。考虑将jar添加到catalina_base/conf/catalina.properties文件中的

二叉树遍历,给出前序和中序表达式写出后序表达式_二叉树给出前序和中序求后序-程序员宅基地

文章浏览阅读1k次。题目链接:[link]http://codeup.cn/problem.php?cid=100000611&pid=2link.题目二叉树的前序、中序、后序遍历的定义:前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树;中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树;后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。给定一..._二叉树给出前序和中序求后序

Numpy的简明安装_numpy怎么安装-程序员宅基地

文章浏览阅读8.3w次,点赞55次,收藏138次。1)、安装Python3.4版本以上,因为这样会自带pip(包管理器的安装) 检查Python版本。 打开cmd,输入Python 现在我们可以知道Python的版本与位数,比如我的就是Python3.7,64位。 2)、去 https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 下载numpy, 这里要看下载的版本,37即版本3..._numpy怎么安装

pip安装出现PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。_另一个程序正在使用此文件,进程无法访问。: 'c:\\program files\\python31-程序员宅基地

文章浏览阅读1.2k次。打开c:\program files\python36\lib\site-packages\pip\compat__init__.py在第75行,把return s.decode(‘utf_8’)改为return s.decode(‘cp936’) 即可。转载自:https://blog.csdn.net/qq_35203425/article/details/80455243_另一个程序正在使用此文件,进程无法访问。: 'c:\\program files\\python311\\lib\

css3实现立方体,并且自转效果_css3立体艺术字实现自转-程序员宅基地

文章浏览阅读1.8k次。http://jsfiddle.net/8Tb6x/先是HTML 一个父div包含四个绝对定位的div 1 2 3 4 首先,一个静态的立方体.face:nth-child(1) { -webkit-transform: /*rotateY(0deg)*/ translateZ(2.5em /* half the side l_css3立体艺术字实现自转

随便推点

mahout 协同过滤 参数大全_协同过滤算法函数参数-程序员宅基地

文章浏览阅读2k次。Mahout0.9—Hadoop2.20—协同过滤算法 1.1. 基于物品的协同过滤推荐函数Mahout支持推荐函数,通过mahout –-help 查看:函数1:itemsimilarity: : Compute the item-item-similarities for item-based collaborative filtering itemsimilarity是计算物品相似度矩阵_协同过滤算法函数参数

VINS-MONO源码学习(二):状态估计器流程processImage_estimator::processimage-程序员宅基地

文章浏览阅读1.1k次。在上一篇文章的预积分完成之后,VINS-MONO执行了这个函数,实现了视觉与IMU的初始化以及非线性优化的紧耦合,本篇先考虑初始化。1、首先搞清楚这个函数的输入image是个什么东西:estimator.processImage(image, img_msg->header);measurement是一组观测(一帧图像和若干IMU数据),数据类型是std::pair<std::vector<sensor_msgs::ImuConstPtr>, sensor_msgs::Poin_estimator::processimage

tableView的复用问题----里面的子视图内容重叠!_movable-view重叠-程序员宅基地

文章浏览阅读394次。之前遇到过一个问题,tableView的cell里面添加了一个label,但是上下滑动后,label上面的字全部重叠在了一起,这个是tableView的复用问题,在别的地方看了一个方法,觉得比较好就推荐给大家,代码如下:if(!cell) { //这里是你创建cell的代码,只要是iOS程序员应该都会写这里我就不在写了}else{ while ([annotationView._movable-view重叠

关于localtime 函数输出与上海时间不同_localtime函数和date命令结果不一样-程序员宅基地

文章浏览阅读364次。首先是怎样获得系统时间?time_t timer; struct tm* tblock;timer = time((time_t*)NULL);tblock = localtime(&timer);printf("%s",asctime(tblock));localtime输出的是系统时间,当系统时间与硬件时间不同的时候应该怎么办?硬件时间是通过clock --sh_localtime函数和date命令结果不一样

巧用 background-clip 实现超强的文字动效_css3 background-clip制作文字动画-程序员宅基地

文章浏览阅读253次。Python微信订餐小程序课程视频https://edu.csdn.net/course/detail/36074Python实战量化交易理财系统https://edu.csdn.net/course/detail/35475最近,有同学询问,如何使用 CSS 实现如下效果:看起来是个很有意思的动效。仔细思考一下,要想实现这类效果,其实用到的核心属性只有一个 – background-clip: text。有意思的 background-clip: textbackground-clip:_css3 background-clip制作文字动画

计算两个字符串的相似度_mysql 字符串相似度-程序员宅基地

文章浏览阅读223次。计算两个字符串的相似度_mysql 字符串相似度

推荐文章

热门文章

相关标签