java将JSON字符串格式化到控制台的工具类
final class FormatUtil { /** * 打印输入到控制台 * * @param jsonStr * @author lizhgb * @Date 2015-10-14 下午1:17:22 */ public static void printJson(String jsonStr) { System.out.println(formatJson(jsonStr)); } /** * 格式化 * @param jsonStr * @return * @author lizhgb * @Date 2015-10-14 下午1:17:35 * @Modified 2017-04-28 下午8:55:35 */ public static String formatJson(String jsonStr) { if (null == jsonStr || "".equals(jsonStr)) { return ""; } StringBuilder sb = new StringBuilder(); 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); } } return sb.toString(); } /** * 添加space * * @param sb * @param indent * @author lizhgb * @Date 2015-10-14 上午10:38:04 */ private static void addIndentBlank(StringBuilder sb, int indent) { for (int i = 0; i < indent; i++) { sb.append('\t'); } } }