赞
踩
IDEA中toString方法默认使用的是 属性名=属性值 ,这一格式进行进行属性输出,调用toString方法后生成的字符串不如JSON格式便于查看,IDEA提供了自定义模板的的能力,我们借助这一功能,可以将toString方法自定义成我们需要的JSON格式,步骤如下
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格式,比如,字符串类型的值,输出未加双引号,但是已经能够很清楚的表现出具体的结构了,所以也就没有纠结那么多了,如果有严格要求的小伙伴,可以自行修改模板以达到想要的效果
如果该教程可以满足您的需求,请给个赞,谢谢 [\抱拳]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。