在JAVA中把JSON數據格式化輸出到控制台


public class ForMatJSONStr {
 
	public static void main(String[] args) {
		String jsonStr = "{\"id\":\"1\",\"name\":\"a1\",\"obj\":{\"id\":11,\"name\":\"a11\",\"array\":[{\"id\":111,\"name\":\"a111\"},{\"id\":112,\"name\":\"a112\"}]}}";
		String fotmatStr = ForMatJSONStr.format(jsonStr);        
//		fotmatStr = fotmatStr.replaceAll("\n", "<br/>");
//		fotmatStr = fotmatStr.replaceAll("\t", "    ");
		System.out.println(fotmatStr);
	} 
	
	/**
	 * 得到格式化json數據  退格用\t 換行用\r
	 */
	public static String format(String jsonStr) {
		int level = 0;
		StringBuffer jsonForMatStr = new StringBuffer();
		for(int i=0;i<jsonStr.length();i++){
			char c = jsonStr.charAt(i);
			if(level>0&&'\n'==jsonForMatStr.charAt(jsonForMatStr.length()-1)){
				jsonForMatStr.append(getLevelStr(level));
			}
			switch (c) {
			case '{': 
			case '[':
				jsonForMatStr.append(c+"\n");
				level++;
				break;
			case ',': 
				jsonForMatStr.append(c+"\n");
				break;
			case '}':
			case ']':
				jsonForMatStr.append("\n");
				level--;
				jsonForMatStr.append(getLevelStr(level));
				jsonForMatStr.append(c);
				break;
			default:
				jsonForMatStr.append(c);
				break;
			}
		}
		
		return jsonForMatStr.toString();

	}
	
	private static String getLevelStr(int level){
		StringBuffer levelStr = new StringBuffer();
		for(int levelI = 0;levelI<level ; levelI++){
			levelStr.append("\t");
		}
		return levelStr.toString();
	}

}

輸出結果如下:

 

 代碼僅供參考,其中對於json中原有\n \t 或者<br/>的情況未做過多考慮


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM