测试IDEA中几款将Java类转JSON字符串的插件(最好用的Java类得到JSON字串的插件)

Posted 石头wang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试IDEA中几款将Java类转JSON字符串的插件(最好用的Java类得到JSON字串的插件)相关的知识,希望对你有一定的参考价值。

测试IDEA中几款将Java类转JSON字符串的插件

一、背景

有时候我们需要从写好的 Java 类得到 JSON字符串(一般是 DTO/XxxRequest之类的,即 controller 接口用来接收参数的 POJO),这样写好的接口能很方便得到测试用的 JSON 字符串

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

@Data
public class DemoDTO 
    private String str1;
    private Integer integer1;
    private Long long1;
    private Boolean bool;

    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;


二、结论

如图,箭头从上到下分别是 RestfulToolKit-fix、Java Bean to Json、POJO to JSON插件的菜单,测试结果:

  • RestfulToolKit-fix的完全不能用,绝对是要弃用的(一些嵌套结构无法体现)
  • Java Bean to Json(Convert to JSON菜单):建议别用,因为有更加强大的存在,而且这款在某些情况下得到的JSON字串也是会有缺少结构
  • POJO to JSON(MakeJson菜单):最完美,实测无论任何的嵌套结构都能得到正确的JSON字串(极力推荐

三、实践?

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

测试IDEA版本:Mac版,2020.1.3 Ultimate

1)Java Bean to Json (使用的版本:1.0.7)

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

转换的结果:


  "str1": "",
  "integer1": 0,
  "long1": 0,
  "bool": false,
  "strList": [
    ""
  ],
  "additionalMap": ,
  "sub": 
    "str1": "",
    "strList": [
      ""
    ]
  ,
  "subList": [],
  "outerSub": 
    "str1": "",
    "integer1": 0
  ,
  "outerSubs": []

可以看到对子类还是还原得不错,无论是内部类Sub还是外部类OuterSub都能还原,就是对于private List<Sub> subList; 这类的结构还原得很不好

2)POJO to JSON(使用的版本:1.0)

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

转换的结果:


    "str1": "str",
    "integer1": 0,
    "long1": 0,
    "bool": true,
    "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
        
    ]

可以看到这个插件非常完美地获得了json格式(获取的时候不是 pretty format的,上述是后期用用别的工具格式化的,有点遗憾)

难能可贵的是,类型有比较好的提示,如Map<String, String>,字符串也用了比较明显的 "str"

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

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

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

可以看到上述3个右键菜单是RestfulToolKit-fix添加的,compressed这个是变成压缩的一行

转换的效果:非常不理想,绝对是要弃用的


  "str1": "demoData",
  "integer1": 1,
  "long1": 1,
  "bool": true,
  "strList": [
    "demoData"
  ],
  "subList": 
    "str1": "demoData"
  ,
  "outerSubs": 
    "str1": "demoData",
    "integer1": 1
  

四、思考

对于循环引用的类型,会不会造成程序无响应甚至死机?

@Data
public class Stu 
    private String name;
    private Integer age;

例如这种:实测 POJO to JSON(MakeJson菜单) 是不会的(其他两个插件就不测试了,因为不是推荐的插件),得到的是

"name":"str","age":0

以上是关于测试IDEA中几款将Java类转JSON字符串的插件(最好用的Java类得到JSON字串的插件)的主要内容,如果未能解决你的问题,请参考以下文章

几款主流 JSON 库性能对比,你用的是那种?

Java高级:java实体类转json字符串

提高Java开发效率,Idea必装的几款插件

java 怎么把正常时间转换成json类型的

java实体类怎么转换成json。

Apifox 实体类转请求参数数据模型