final classFormatUtil {/*** 打印输入到控制台
*
*@paramjsonStr
*@authorlizhgb
* @Date 2015-10-14 下午1:17:22*/
public static voidprintJson(String jsonStr) {
System.out.println(formatJson(jsonStr));
}/*** 格式化
*@paramjsonStr
*@return*@authorlizhgb
* @Date 2015-10-14 下午1:17:35
* @Modified 2017-04-28 下午8:55:35*/
public staticString formatJson(String jsonStr)
{if (null == jsonStr || "".equals(jsonStr))
{return "";
}
StringBuilder sb= newStringBuilder();char last = '\0';char current = '\0';int indent = 0;boolean isInQuotationMarks = false;for (int i = 0; i < jsonStr.length(); i++)
{
last=current;
current=jsonStr.charAt(i);switch(current)
{case '"':if (last != '\\')
{
isInQuotationMarks= !isInQuotationMarks;
}
sb.append(current);break;case '{':case '[':
sb.append(current);if (!isInQuotationMarks)
{
sb.append('\n');
indent++;
addIndentBlank(sb, indent);
}break;case '}':case ']':if (!isInQuotationMarks)
{
sb.append('\n');
indent--;
addIndentBlank(sb, indent);
}
sb.append(current);break;case ',':
sb.append(current);if (last != '\\' && !isInQuotationMarks)
{
sb.append('\n');
addIndentBlank(sb, indent);
}break;default:
sb.append(current);
}
}returnsb.toString();
}/*** 添加space
*
*@paramsb
*@paramindent
*@authorlizhgb
* @Date 2015-10-14 上午10:38:04*/
private static void addIndentBlank(StringBuilder sb, intindent)
{for (int i = 0; i < indent; i++)
{
sb.append('\t');
}
}
}