下面是java格式化json的方法
/**
* 格式化
* @param jsonStr json数据
* @return
*/
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;
for (int i = 0; i < jsonStr.length(); i++) {
last = current;
current = jsonStr.charAt(i);
//遇到{ [换行,且下一行缩进
switch (current) {
case '{':
case '[':
sb.append(current);
sb.append("<br>");
indent++;
addIndentBlank(sb, indent);
break;
//遇到} ]换行,当前行缩进
case '}':
case ']':
sb.append("<br>");
indent--;
addIndentBlank(sb, indent);
sb.append(current);
break;
//遇到,换行
case ',':
sb.append(current);
if (last != '\\') {
sb.append("<br>");
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(" ");
}
}
下面是js的格式化json代码:
<script type="text/javascript">
function jsonFomat(id) {
var text = document.getElementById(id).innerHTML.split("\n").join(" ");
var t = [];
var tab = 0;
var inString = false;
for (var i = 0, len = text.length; i < len; i++) {
var c = text.charAt(i);
if (inString && c === inString) {
// TODO: \\"
if (text.charAt(i - 1) !== '\\') {
inString = false;
}
} else if (!inString && (c === '"' || c === "'")) {
inString = c;
} else if (!inString && (c === ' ' || c === "\t")) {
c = '';
} else if (!inString && c === ':') {
c += ' ';
} else if (!inString && c === ',') {
c += "\n" + space(tab * 2);
} else if (!inString && (c === '[' || c === '{')) {
tab++;
c += "\n" + space(tab * 2);
} else if (!inString && (c === ']' || c === '}')) {
tab--;
c = "\n" + space(tab * 2) + c;
}
t.push(c);
}
document.getElementById(id).innerHTML = t.join('');
};
function space(len) {
var t = [], i;
for (i = 0; i < len; i++) {
t.push(' ');
}
return t.join('');
};
</script>