[TOC]
为什么要更改 toString 格式
在实际开发中,经常需要对 entity
实例调试的时候重写 toString
方法来输出日志
而IDEA 默认的模板不是 json 格式化的,日志调试起来不是很方便
更改方法
打开任意一个 java 类
按组合键
- win or linux
alt + ins
- mac
cmd + n
选择 toString()
出现弹窗,选择右上角的 Settings
切换选项卡到 Templates
,并点击左侧的 +
号
出现窗口
输入模板名称 String toJsonString
点击ok
左侧分栏勾选 String toJsonString
,在右侧输入内容为
public java.lang.String toString() {
#if ( $members.size() > 0 )
#set ( $i = 0 )
return "\"$classname\": {" +
#foreach( $member in $members )
#if ( $i == 0 )
"##
#else
", ##
#end
#if ( $member.objectArray )
#if ($java_version < 5)
\"$member.name\":" + ($member.accessor == null ? null : java.util.Arrays.asList($member.accessor)) +
#else
\"$member.name\":" + java.util.Arrays.toString($member.accessor) +
#end
#elseif ( $member.primitiveArray && $java_version >= 5)
\"$member.name\":" + java.util.Arrays.toString($member.accessor) +
#elseif ( $member.string )
\"$member.name\": \"" + $member.accessor + '\"' +
#else
\"$member.name\": \"" + $member.accessor +
#end
#set ( $i = $i + 1 )
#end
'}';
#else
return "\"$classname\":{}";
#end
}
然后确认后选择模板
这样 toString 的结果就是Json了
额外配置
String toJsonString and super.toString()
public java.lang.String toString() {
#if ( $members.size() > 0 )
#set ( $i = 0 )
return "\"$classname\":{" +
#foreach( $member in $members )
#if ( $i == 0 )
"##
#else
", ##
#end
#if ( $member.objectArray )
#if ($java_version < 5)
\"$member.name\":" + ($member.accessor == null ? null : java.util.Arrays.asList($member.accessor)) +
#else
\"$member.name\":" + java.util.Arrays.toString($member.accessor) +
#end
#elseif ( $member.primitiveArray && $java_version >= 5)
\"$member.name\":" + java.util.Arrays.toString($member.accessor) +
#elseif ( $member.string )
$member.name='" + $member.accessor + '\'' +
#else
\"$member.name\":" + $member.accessor +
#end
#set ( $i = $i + 1 )
#end
#if ( $class.hasSuper )
"} " + super.toString();
#else
'}';
#end
#else
#if ( $class.hasSuper )
return "\"$classname\":{} " + super.toString();
#else
return "\"$classname\":{}";
#end
#end
}