测试IDEA中几款从Java bean(POJO)得到JSON字符串用于postman请求参数的插件

这篇具有很好参考价值的文章主要介绍了测试IDEA中几款从Java bean(POJO)得到JSON字符串用于postman请求参数的插件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

测试IDEA中几款从Java bean(POJO)得到JSON字符串用于postman请求参数的插件

一、背景

有时候,我们需要从写好的 Java 类得到 JSON字符串(Java类一般指 DTO/XxxRequest,即 controller 接口用来接收参数的 POJO),用于postman调用接口的时候的入参。

比如,DemoDTO是controller接口的入参,我现在要用postman简单测一下,我怎么样快速得到 json 字符串呢?

@Data
public class DemoDTO {
    private String str1;
    private Integer integer1;
    private Long long1;
    private Boolean bool;
    private Double double1;
    private BigDecimal bigDecimal1;
    private Date javaUtilDate;
    private Timestamp javaSqlTimestamp;

    private List<String> strList;
    private Map<String, String> additionalMap;

    private Sub sub;
    private List<Sub> subList;

    private OuterSub outerSub;
    private List<OuterSub> outerSubs;

    @Data
    public static class Sub {
        private String str1;
        private List<String> strList;
    }
}


@Data
public class OuterSub {
    private String str1;
    private Integer integer1;
}

二、结论

通过 IDEA 的一些插件,可以实现。一般是装了这些插件后,在类上右键选择 convert to JSON 之类的菜单, JSON 字符串便自动保存到剪切板。

如下是一些常见的POJO转JSON字串的插件,以及我试验的插件版本(IDEA是2020.1.3 ultimate)

  • 1)RestfulToolKit-fix(2.0.7,Convert to JSON 等菜单)

    https://plugins.jetbrains.com/plugin/16788-restfultoolkit-fix

    一些嵌套结构无法体现,完全不能用,绝对是要弃用的

  • 2)Java Bean to Json(1.0.7,菜单Convert to JSON

    https://plugins.jetbrains.com/plugin/10336-java-bean-to-json

    建议别用,这款在某些情况下得到的JSON字串也是会有缺少结构

  • 3)POJO to JSON(1.0,作者李大麦,菜单MakeJson

    https://plugins.jetbrains.com/plugin/9686-pojo-to-json

    实测无论任何的嵌套结构都能得到正确的JSON字串(推荐,但遇到循环引用会导致IDEA无响应,且不支持枚举

  • 4)POJO to JSON(1.0.8,作者organics2016,菜单)

    https://plugins.jetbrains.com/plugin/12066-pojo-to-json

    极力推荐,没有硬伤,循环引用会提示错误比较友好,支持枚举

    因为我的idea是2020.1.3,能安装的版本是1.0.8,安装不了更新的插件

如图,箭头从上到下分别是 RestfulToolKit-fix、POJO to JSON(4)Java Bean to Json、POJO to JSON(3)插件的菜单

idea postman插件,编程工具/Notpad/VS Codde/IDEA,java,intellij-idea,json

三、实践

测试IDEA版本:Mac版,2020.1.3 Ultimate

1)RestfulToolKit-fix(或者RestfulToolKit也可能带有)

插件地址:https://plugins.jetbrains.com/plugin/16788-restfultoolkit-fix

前者是后者的修复版,后者是原作者的版本很久都没更新,有些bug如不能兼容高版本的 IDEA 等。

这个插件本来是用来搜索endpoint的,但是也附带有转 JSON字符串的功能。

idea postman插件,编程工具/Notpad/VS Codde/IDEA,java,intellij-idea,json

转换的效果:非常不理想,绝对是要弃用的,许多字段在转换过程中丢失了!!!

// javaSqlTimestamp 不见了!!additionalMap不见了!!sub不见了!!outerSub不见了!!丢失了这么多字段!!!
// subList首先解析错误,不是对象,应该是数组,而且subList里的对象丢失了一些字段如strList
{
  "str1": "demoData",
  "integer1": 1,
  "long1": 1,
  "bool": true,
  "double1": 1.0,
  "bigDecimal1": 1,
  "javaUtilDate": "2022-10-27 21:15:00",
  "strList": [
    "demoData"
  ],
  "subList": {
    "str1": "demoData"
  },
  "outerSubs": {
    "str1": "demoData",
    "integer1": 1
  }
}
2)Java Bean to Json (ConvertToJson菜单,使用的版本:1.0.7)

插件地址:https://plugins.jetbrains.com/plugin/10336-java-bean-to-json/versions

idea postman插件,编程工具/Notpad/VS Codde/IDEA,java,intellij-idea,json

转换的结果:

// 可以看到对子类还是还原得不错,无论是内部类Sub还是外部类OuterSub都能还原,
// 就是对于 private List<Sub> subList; private List<OuterSub> outerSubs; 这类的结构还原得不好,直接结构丢失了
{
  "str1": "",
  "integer1": 0,
  "long1": 0,
  "bool": false,
  "double1": 0.0,
  "bigDecimal1": 0.0,
  "javaUtilDate": "2022-10-27 20:48:38",
  "javaSqlTimestamp": 1666874918458,
  "strList": [
    ""
  ],
  "additionalMap": {},
  "sub": {
    "str1": "",
    "strList": [
      ""
    ]
  },
  "subList": [],
  "outerSub": {
    "str1": "",
    "integer1": 0
  },
  "outerSubs": []
}

补充1:对枚举也能很好识别,得到的样式是将所有的枚举列举出来

{
  "typeEnum1": [
    "TYPE1",
    "TYPE2"
  ]
}

补充2:对于循环引用,不会报错,循环引用的字段被忽略掉,也不会导致IDEA无响应

@Data
public class Stu {
    private String name;
    private Integer age;
    private Stu stu;
}

得到

{
  "name": "",
  "age": 0
}
3)POJO to JSON(MakJson菜单,使用的版本:1.0)

插件地址:https://plugins.jetbrains.com/plugin/9686-pojo-to-json

idea postman插件,编程工具/Notpad/VS Codde/IDEA,java,intellij-idea,json

转换的结果:

// 可以看到这个插件非常完美地获得了json格式(获取的时候不是 pretty format的,上述是后期用用别的工具格式化的,有点遗憾)
// 难能可贵的是,类型有比较好的提示,如`Map<String, String>`,字符串也用了比较明显的 `"str"`。
{
    "str1": "str",
    "integer1": 0,
    "long1": 0,
    "bool": true,
    "double1": 0,
    "bigDecimal1": "BigDecimal",
    "javaUtilDate": 1666877320450,
    "javaSqlTimestamp": "Timestamp",
    "strList": [
        "str"
    ],
    "additionalMap": "Map<String, String>",
    "sub": {
        "str1": "str",
        "strList": [
            "str"
        ]
    },
    "subList": [
        {
            "str1": "str",
            "strList": [
                "str"
            ]
        }
    ],
    "outerSub": {
        "str1": "str",
        "integer1": 0
    },
    "outerSubs": [
        {
            "str1": "str",
            "integer1": 0
        }
    ]
}

测试它不支持两样东西:

  • 枚举

    遇到枚举类的时候实际会报错,但是表面上没有任何提示(之前转换成功后在IDEA右下角有消息通知),剪切板内容不会更新(还是保留上次的剪切板里的内容。你要注意把上次的剪切板内容稍微改下内容,不然你 “不加枚举字段MakeJson一次,加上枚举再MakeJson一次” 这种场景可能会让你以为只是忽略了枚举字段,即前面那次无枚举正常转换后面那次不正常转换但是保留了上次的剪切板让你以为 “增加枚举字段只是被忽略了”)

    // 不支持枚举
    @Data
    public class Stu {
        private String name;
        private Integer age;
        private TypeEnum typeEnum;
    }
    public enum TypeEnum {
        TYPE1, TYPE2
    }
    
  • 不支持嵌套:我估计实际是报错的,但是没有任何错误提示。最后会导致idea无响应!!!

    @Data
    public class Stu {
        private String name;
        private Integer age;
        private Stu stu;
    }
    
4)POJO to JSON(1.0.8,作者organics2016,菜单)----非常推荐

插件地址:https://plugins.jetbrains.com/plugin/12066-pojo-to-json

转换结果:非常完美!枚举也是支持的,而且循环引用的也会报错提示

{
  "str1": "",
  "integer1": 0,
  "long1": 0,
  "bool": false,
  "double1": 0.00,
  "bigDecimal1": 0.00,
  "javaUtilDate": "2022-10-27 20:48:37",
  "javaSqlTimestamp": "2022-10-27 20:48:37",
  "typeEnum1": "TYPE1",
  "strList": [
    ""
  ],
  "additionalMap": {},
  "sub": {
    "str1": "",
    "strList": [
      ""
    ]
  },
  "subList": [
    {
      "str1": "",
      "strList": [
        ""
      ]
    }
  ],
  "outerSub": {
    "str1": "",
    "integer1": 0
  },
  "outerSubs": [
    {
      "str1": "",
      "integer1": 0
    }
  ]
}

补充1:循环引用

@Data
public class Stu {
    private String name;
    private Integer age;
    private Stu stu;
}

报错并且不会将内容拷贝进剪切板(还是上一次的剪切板内容)

idea postman插件,编程工具/Notpad/VS Codde/IDEA,java,intellij-idea,json文章来源地址https://www.toymoban.com/news/detail-822641.html

到了这里,关于测试IDEA中几款从Java bean(POJO)得到JSON字符串用于postman请求参数的插件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 几款提高开发效率的Idea 插件

    开发代码过程中经常会有一些需要提交到代码仓库的文件,比如java文件生成的.class、.jar 等,如果将编译后的文件都提交到代码库那么代码库会很大,关键是没有必要。 这款插件就可以很方便的解决某类文件或者某个文件夹不需要提交到代码仓库的问题。 提供Spring环境下的

    2024年01月16日
    浏览(47)
  • IDEA插件系列(6):GsonFormatPlus插件——JSON字符串转换Java实体类

    GsonFormatPlus JSON字符串与Java实体类的相互转换。 第一种安装方式是使用IDEA下载插件进行安装 第二种安装方式是使用离线插件进行安装 插件下载地址:https://plugins.jetbrains.com/plugin/7654-gsonformat/ 3. 使用方法 先在项目的默认包目录下创建一个空的类 右键-生成(Alt+insert) 选中G

    2024年02月12日
    浏览(34)
  • java中几种对象存储(文件存储)中间件的介绍

    一、前言 在博主得到系统中使用的对象存储主要有OSS(阿里云的对象存储) COS(腾讯云的对象存储)OBS(华为云的对象存储)还有就是MinIO 这些玩意。其实这种东西大差不差,几乎实现方式都是一样,存储模式大同小异。下面介绍几种存储模式在springBoot中的使用。 二、阿里

    2024年03月15日
    浏览(35)
  • 【Java多线程】线程中几个常见的属性以及状态

    目录 Thread的几个常见属性 1、Id 2、Name名称 3、State状态 4、Priority优先级 5、Daemon后台线程 6、Alive存活   ID 是线程的唯一标识,由系统自动分配,不同线程不会重复。 用户定义的名称。该名称在各种调试工具中都会用到。 状态表示线程当前所处的一个情况。和进程一样,线程

    2024年02月19日
    浏览(30)
  • Java-WebSocket通信 实现根据查询条件主动实时回传数据给前端&List<Map<String, Object>>转JSON编码器&WebSocket无法注册Bean问题解决方案

    项目背景:Java环境,Get请求根据前端查询条件建立WebSocket连接,每5秒主动实时推送最新查询结果给前端展示。其中也遇到定时器、WebSocket无法注册Bean、No encoder specified for object of class [class java.util.xxx]等问题,相关解决方案也有列举~ Web Sockets 的是在一个单独的持久连接上提

    2024年02月04日
    浏览(37)
  • Java:do、dto、bo、ao、vo、pojo

    普通的Java对象,是一种简单的JavaBean,主要用于数据传输。POJO类除了属性和必要的getter/setter方法外,没有其他的业务逻辑和特殊的操作,通常作为数据模型使用。 实现类DO(Data Access Object)是一种用于访问和操作数据库数据的设计模式,它允许您定义一个数据访问对象,以

    2023年04月08日
    浏览(25)
  • 这几款 IDEA 主题也太好看了吧,百看不腻

    在这篇文章中,我精选了几个比较适合 Java 编码的 IDEA 主题供小伙伴们选择。另外,我自己用的是 One Dark theme 这款。 注意:以下主题按照使用人数降序排序。推荐指数仅为个人看法。 Material Theme UI[1] 推荐指数 :⭐⭐⭐⭐ 这是 IDEA 中使用人数最多的一款主题。 当你安装完这

    2024年02月16日
    浏览(25)
  • Java:PO、VO、BO、DO、DAO、DTO、POJO

    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! PO是持久化对象,用于表示数据库中的实体或表的映射 通常与数据库表的结构和字段对应 PO的属性对应数据库表的字段,可以进行持久化操作(存储、读取、更新、删除) VO是值对象,用于封装数据 通常是不可变的,

    2024年02月12日
    浏览(32)
  • JSON请求数据如何转换为bean对象

    一:前端传来的json (Postman的POST提交方式中的raw提交),用以下两种方式接收: 1、io流的方式 2、用注解的方式 二:前端传来的值(Postman的POST提交方式中的form-data提交) 三:前端传来的值(Postman的POST提交方式中的x-www-form-urlencoded提交)一样的

    2024年02月16日
    浏览(25)
  • 用labelme标注矩形框和关键点得到的json文件转txt格式用于yolov5-face训练

    目录 我用labelme标注完的json文件长这样:标注了两种:矩形框和点 我要转换的txt格式长这样: json格式转txt如下: 从txt查看标注结果 参考的这位博主并在此基础上做了改动。(484条消息) LabelMe 标注的json转txt的格式转换教程_无损检测小白白的博客-CSDN博客 我用labelme标注完的

    2024年02月12日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包