/**
* JSON格式字符串标准格式话工具类
*/
public class JsonFormatTool {
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
*/
private static void addIndentBlank(StringBuilder sb, int indent)
{
for (int i = 0; i < indent; i++)
{
sb.append('\t');
}
}
}
JSON字符串标准化格式工具类
最新推荐文章于 2024-12-24 16:43:26 发布