用Java对JSON字符串进行格式化输出

工作中进行http相关接口测试时经常会收到返回的json数据,因为没有格式化输入到控制台后看起来很不直观。

早上写了一个小工具类,对这JSON串进行格式化输出,代替System.out.print

package MyTest;
/**
 * 格式化输入工具类
 * @author lizhgb
 * @date  2015-10-14
 *
 */
public final class FormatUtil {

	/**
	 * 打印输入到控制台
	 * @param jsonStr
	 * @author   lizhgb
	 * @Date   2015-10-14 下午1:17:22
	 */
	public static void printJson(String jsonStr){
		System.out.println(formatJson(jsonStr));
	}

	/**
	 * 格式化
	 * @param jsonStr
	 * @return
	 * @author   lizhgb
	 * @Date   2015-10-14 下午1:17:35
	 */
    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(‘\n‘);
                    indent++;
                    addIndentBlank(sb, indent);
                    break;
                case ‘}‘:
                case ‘]‘:
                    sb.append(‘\n‘);
                    indent--;
                    addIndentBlank(sb, indent);
                    sb.append(current);
                    break;
                case ‘,‘:
                    sb.append(current);
                    if (last != ‘\\‘) {
                        sb.append(‘\n‘);
                        addIndentBlank(sb, indent);
                    }
                    break;
                default:
                    sb.append(current);
            }
        }

        return sb.toString();
    }

    /**
     * 添加space
     * @param sb
     * @param indent
     * @author   lizhgb
     * @Date   2015-10-14 上午10:38:04
     */
    private static void addIndentBlank(StringBuilder sb, int indent) {
        for (int i = 0; i < indent; i++) {
            sb.append(‘\t‘);
        }
    }
}

测试:

@Test
	public void jsonPrintTest2() {

		String str = "{\"content\":\"this is the msg content.\",\"tousers\":\"user1|user2\",\"msgtype\":\"texturl\",\"appkey\":\"test\",\"domain\":\"test\","
				+ "\"system\":{\"wechat\":{\"safe\":\"1\"}},\"texturl\":{\"urltype\":\"0\",\"user1\":{\"spStatus\":\"user01\",\"workid\":\"work01\"},\"user2\":{\"spStatus\":\"user02\",\"workid\":\"work02\"}}}";
		FormatUtil.printJson(str);
	}

输出:

{
	"content":"this is the msg content.",
	"tousers":"user1|user2",
	"msgtype":"texturl",
	"appkey":"test",
	"domain":"test",
	"system":{
		"wechat":{
			"safe":"1"
		}
	},
	"texturl":{
		"urltype":"0",
		"user1":{
			"spStatus":"user01",
			"workid":"work01"
		},
		"user2":{
			"spStatus":"user02",
			"workid":"work02"
		}
	}
}
时间: 2024-08-25 14:41:02

用Java对JSON字符串进行格式化输出的相关文章

HTML代码,CSS代码,JSON字符串在线格式化,美化工具

HTML代码,CSS代码,JSON字符串在线格式化,美化工具 http://www.phpthinking.com/format.htm

java 解析JSON字符串

JAVA解析json字符串:根据城市itemName名称获取其码itemCode 1.json字符串 [{"childList":        [{"childList":            [{"childList":[],"id":374,"itemCode":"110101","itemName":"东城区","itemNam

Java任意JSON字符串中,包含指定关键词的VALUE

1 /**Java任意JSON字符串中,包含指定关键词的json值*/ 2 public static void main(String[] s){ 3 String attrjson = "{\"12\":\"100kg\",\"96\":\"sd\"}"; 4 JSONObject obj = (JSONObject) JSON.parse(attrjson); 5 String keyword = &

字符串拼接格式化输出

字符串拼接格式化输出就是把需要输出的内容编辑好以后赋值给一个变量,最后输出到屏幕上.方法一 name = input('your name:') age = int(input('your age:')) # int() str转int. job = input('your job:') info = ''' ---------- info of %s --------- Name : %s Age : %d Job : %s ''' % (name,name,age,job) # 此处 % 为

对Json字符串进行格式化显示

很多时候,我们拿Json字符串作为返回结果,但是当数据量多的时候,一堆的Json字符串看起来很不直观,这时候我们可以使用以下办法将Json字符串格式化一下再输出 var JsonUti = { //定义换行符 n: "\n", //定义制表符 t: "\t", //转换String convertToString: function (obj) { return JsonUti.__writeObj(obj, 1); }, //写对象 __writeObj: fun

java 获取json字符串中key对应的值

用到了Gson的JsonParser maven项目引入 <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.3</version></dependency> 也可以直接去这个网址下载jar包 https://mvnrepository.com/artifact/com.g

【Python④】python恼人的字符串,格式化输出

恼人的字符串 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母.数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母a的编码是97. 但是要处理中文至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去.全世界有上百种语言,为了扩充ASCII编码,用于显示本国的语言,不同的国家和地区制定了不同的标准,由此产生

Java中Json字符串直接转换为对象(包括多层List集合)

http://blog.csdn.net/catoop/article/details/42744705 使用到的类:net.sf.json.JSONObject 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-beanutils.jar,commons-httpclient.jar,commons-lang.jar,ezmorph.jar,morph-1.0.1.jar 下面是例子代码: [java] 

Json-lib 进行java与json字符串转换之一

这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下. 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好,下面先看下JSON的格式, JSON可以有两种格式,一种是对象格式的,另一种是数组对象, {"name":"JSON","add