Android代码json字符串格式化
2020-02-01 本文已影响0人
明日未期
代码来源百度
public class FormatJson
{
public static String format(String strJson) {
// 计数tab的个数
int tabNum = 0;
StringBuffer jsonFormat = new StringBuffer();
int length = strJson.length();
char last = 0;
for (int i = 0; i < length; i++) {
char c = strJson.charAt(i);
if (c == '{') {
tabNum++;
jsonFormat.append(c + "\n");
jsonFormat.append(getSpaceOrTab(tabNum));
}
else if (c == '}') {
tabNum--;
jsonFormat.append("\n");
jsonFormat.append(getSpaceOrTab(tabNum));
jsonFormat.append(c);
}
else if (c == ',') {
jsonFormat.append(c + "\n");
jsonFormat.append(getSpaceOrTab(tabNum));
}
else if (c == ':') {
jsonFormat.append(c + " ");
}
else if (c == '[') {
tabNum++;
char next = strJson.charAt(i + 1);
if (next == ']') {
jsonFormat.append(c);
}
else {
jsonFormat.append(c + "\n");
jsonFormat.append(getSpaceOrTab(tabNum));
}
}
else if (c == ']') {
tabNum--;
if (last == '[') {
jsonFormat.append(c);
}
else {
jsonFormat.append("\n" + getSpaceOrTab(tabNum) + c);
}
}
else {
jsonFormat.append(c);
}
last = c;
}
return jsonFormat.toString();
}
private static String getSpaceOrTab(int tabNum) {
StringBuffer sbTab = new StringBuffer();
for (int i = 0; i < tabNum; i++) {
sbTab.append('\t');
}
return sbTab.toString();
}
}