java格式化json ,js格式化json代码

7 篇文章 1 订阅

下面是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("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
		}
	}

下面是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>
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值