测试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字串的插件)的主要内容,如果未能解决你的问题,请参考以下文章