yy's garden

Android什么的

2014年4月22日 #

在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/>的情况未做过多考虑

posted @ 2014-04-22 18:03 tooyond 阅读(9854) 评论(2) 推荐(0) 编辑

2012年12月19日 #

java中多维数组的clone容易引起误解

摘要: int[][] arr1 = new int[][]{{1,2},{1,2}};int[][] arr2 = arr1.clone();因为arr1!=arr2所以我的意图是 修改arr2 在确定修改结束后 将arr2赋给arr1依此保证在arr2修改过程中arr1不变,,,但神奇的是竟然变了后来才注意到虽然arr1!=arr2但arr1[0]==arr2[0]坑爹啊 阅读全文

posted @ 2012-12-19 01:21 tooyond 阅读(169) 评论(0) 推荐(0) 编辑

2012年5月31日 #

关于装修分享网站的构思

摘要: 当前装修站点过于简单 或者说形势过于单一 多数都是借助于传统的展现形势来表达的 比如利用图片分享类网站的模式来展示装修效果图 利用博客类网站的模式来展示装修日志 甚至连装修费用都只是简单截图然后以图片形式展现 我感觉如果专门针对装修信息的特点来针对性的设计一个网站 或许会脱颖而出 装修信息 主要有这... 阅读全文

posted @ 2012-05-31 13:27 tooyond 阅读(160) 评论(1) 推荐(0) 编辑

2011年11月25日 #

【java线程】两线程交叉打印出12a34b56c....5152z

摘要: 我的网友smith某天研究线程 非要我实现这么个效果 一个线程打印1-52 另一个线程打印a-z 通过synchronized控制两线程交叉输出1 2 a 3 4 b 5 6 c .... 51 52 z , 于是我非常蛋疼的写下了如下的代码: public class Main { st... 阅读全文

posted @ 2011-11-25 10:00 tooyond 阅读(1157) 评论(0) 推荐(0) 编辑

导航

统计信息

点击右上角即可分享
微信分享提示