前言
IDEA中toString方法默认使用的是 属性名=属性值 ,这一格式进行进行属性输出,调用toString方法后生成的字符串不如JSON格式便于查看,IDEA提供了自定义模板的的能力,我们借助这一功能,可以将toString方法自定义成我们需要的JSON格式,步骤如下
- 任意代码位置Alt+Insert 打开如下界面,并选择toString()

- 点击setting按钮打开toString方法设置页面,如下

- 点击 + 号即可添加toString模板,命名为JSON后点击OK,此时页面如下

- 复制以下代码到右侧空白处保存
public java.lang.String toString() {
final java.lang.StringBuilder sb = new java.lang.StringBuilder();
sb.append("{")
#if ( $class.hasSuper )
.append("\"super\":").append(super.toString()).append(", ")
#end
#set ($i = 0)
#foreach ($member in $members)
#if ($i == 0)
.append("\"$member.name\":")##
#else
.append(", \"$member.name\":")##
#end
#if ($member.primitiveArray || $member.objectArray)
.append(java.util.Arrays.toString($member.name))
#else
.append($member.accessor)
#end
#set ($i = $i + 1)
#end
.append('}');
return sb.toString();
}
以上代码中,4、5、6三行表示调用父类的toString方法,输出父类中的属性,如果不需要可自行删除
确认代码无误之后,点击OK即可保存
返回代码后再次Alt+Insert按钮,并选择toString(),之后手动选择toString的模板为刚才新建的JSON模板,最后点击OK

生成toString方法如下:
Person父类:
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append("{")
.append("\"gender\":").append(gender)
.append(", \"name\":").append(name)
.append(", \"age\":").append(age)
.append('}');
return sb.toString();
}
调用toString方法输出如下:
{"gender":女, "name":小红, "age":12}
Student子类:
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append("{")
.append("\"super\":").append(super.toString()).append(", ")
.append("\"grade\":").append(grade)
.append(", \"clazz\":").append(clazz)
.append(", \"setList\":").append(setList)
.append('}');
return sb.toString();
}
调用toString方法输出如下:
{"super":{"gender":女, "name":小红, "age":12}, "grade":7年级, "clazz":1班, "setList":[1, 2]}
- 写在最后
因为是简单的toString输出,所以并未定义成很严格的json格式,比如,字符串类型的值,输出未加双引号,但是已经能够很清楚的表现出具体的结构了,所以也就没有纠结那么多了,如果有严格要求的小伙伴,可以自行修改模板以达到想要的效果
如果该教程可以满足您的需求,请给个赞,谢谢 [\抱拳]
版权声明:本文为qq_45402411原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。