用Java对JSON字符串进行格式化输出
来源:互联网 发布:辣鸡软件表情 编辑:程序博客网 时间:2024/05/18 15:55
工作中进行http相关接口测试时经常会收到返回的json数据,因为没有格式化输入到控制台后看起来很不直观。
早上写了一个小工具类,对这JSON串进行格式化输出,代替System.out.print
/** * 格式化输入工具类 * * @author lizhgb * @date 2015-10-14 * @Modified 2017-04-28 * */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 * @Modified 2017-04-28 下午8:55: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; boolean isInQuotationMarks = false; for (int i = 0; i < jsonStr.length(); i++) { last = current; current = jsonStr.charAt(i); switch (current) { case '"': if (last != '\\'){ isInQuotationMarks = !isInQuotationMarks; } sb.append(current); break; case '{': case '[': sb.append(current); if (!isInQuotationMarks) { sb.append('\n'); indent++; addIndentBlank(sb, indent); } break; case '}': case ']': if (!isInQuotationMarks) { sb.append('\n'); indent--; addIndentBlank(sb, indent); } sb.append(current); break; case ',': sb.append(current); if (last != '\\' && !isInQuotationMarks) { 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" } }}
转自:
https://my.oschina.net/jasonli0102/blog/517052?p={{page}}#comment-list
0 0
- 用Java对JSON字符串进行格式化输出
- 用Java对JSON字符串进行格式化输出
- java对Json字符串的格式化输出
- Python进行JSON格式化输出
- json对象格式化字符串输出
- java 格式化json字符串
- Java Json字符串格式化
- 对STL的string进行格式化输出
- 如何对json代码进行格式化显示
- 使用@JsonSerialize对javabean进行json格式化
- 对JSON字符串进行解析
- 用stringstream进行格式化输出
- 用stringstream进行格式化输出
- JSON.stringify可以输出格式化的JSON字符串
- 通过JSON.stringify输出格式化的JSON字符串
- java将字符串进行MD5加密和将时间戳格式化输出的方法
- JAVA对输出进行排版
- 用JAVA把JSON字符串转成JSON格式化的字符串 - tooyond
- 实例探索Java模式之路——单例模式
- JS 操作cookie 设置cookie、读取cookie、删除cookie
- HRBUST 2219 Recover the Matrix(水题)
- 按键驱动(等待队列+设备树+属性文件)
- 网络版免费分床裁剪计划软件V4.0正式公测
- 用Java对JSON字符串进行格式化输出
- 字符串过滤
- LinuxC学习笔记
- 大数据的价值是如何得以彰显的?
- 深度学习
- JAVA报错:Variable 'vv' is accessed from within inner class, needs to be declared final
- Square Number-3258拆平方
- Notepad++ 安装以及主题配置
- 聊一聊jsp的标准动作