Java 控制台格式化输出 JSON 字符串

原创
2017/05/19 15:41
阅读数 1.2K
    public static void main(String[] args) {

		String region = "{\"id\":\"1\",\"name\":\"a1\",\"obj\":{\"id\":11,\"name\":\"a11\",\"array\":[{\"id\":111,\"name\":\"a111\"},{\"id\":112,\"name\":\"a112\"}]}}";
		String fotmated = GgsBase.formatToJson(region);
		// fotmatStr = fotmatStr.replaceAll("\n", "<br/>");
		// fotmatStr = fotmatStr.replaceAll("\t", " ");
		 System.out.println(fotmated);

	}

	/**
	 * get json data backspace use '\t' new line use '\n'
	 */
	public static String formatToJson(String region) {
		int level = 0;
		StringBuffer preBuffer = new StringBuffer();
		for (int i = 0; i < region.length(); i++) {
			char c = region.charAt(i);
			if (level > 0 && '\n' == preBuffer.charAt(preBuffer.length() - 1)) {
				preBuffer.append(getLevelStr(level));
			}
			switch (c) {
			case '{':
			case '[':
				preBuffer.append(c + "\n");
				level++;
				break;
			case ',':
				preBuffer.append(c + "\n");
				break;
			case '}':
			case ']':
				preBuffer.append("\n");
				level--;
				preBuffer.append(getLevelStr(level));
				preBuffer.append(c);
				break;
			default:
				preBuffer.append(c);
				break;
			}
		}

		return String.valueOf(preBuffer);

	}

	private static String getLevelStr(int level) {
		StringBuffer lb = new StringBuffer();
		for (int levelTmp = 0; levelTmp < level; levelTmp++) {
			lb.append("\t");
		}
		return String.valueOf(lb);
	}
{
	"id":"1",
	"name":"a1",
	"obj":{
		"id":11,
		"name":"a11",
		"array":[
			{
				"id":111,
				"name":"a111"
			},
			{
				"id":112,
				"name":"a112"
			}
		]
	}
}

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部