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

    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"
			}
		]
	}
}

 

转载于:https://my.oschina.net/forwy/blog/904408

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值