分享一个格式化json的工具类,在日志输入里直接可以很方便的看log了
2017-06-28 16:23
721 查看
用法:
@Override
public void onResponse(String response) {
if(AppConfig.DEBUG) {
Log.e(“json_http”, “http返回参数:” + JsonFormat.format((java.lang.String) response));
}
onSuccess(response);
}
下面贴代码,可以直接用。
package com.yilvs.utils; /** * json格式化工具 * Created by Sch on 2017/6/28. * */ public class JsonFormat { /** * 默认每次缩进两个空格 */ private static final String empty=" "; public static String format(String json){ try { int empty=0; char[]chs=json.toCharArray(); StringBuilder stringBuilder=new StringBuilder(); for (int i = 0; i < chs.length;) { //若是双引号,则为字符串,下面if语句会处理该字符串 if (chs[i]=='\"') { stringBuilder.append(chs[i]); i++; //查找字符串结束位置 for ( ; i < chs.length;) { //如果当前字符是双引号,且前面有连续的偶数个\,说明字符串结束 if ( chs[i]=='\"'&&isDoubleSerialBackslash(chs,i-1)) { stringBuilder.append(chs[i]); i++; break; } else{ stringBuilder.append(chs[i]); i++; } } }else if (chs[i]==',') { stringBuilder.append(',').append('\n').append(getEmpty(empty)); i++; }else if (chs[i]=='{'||chs[i]=='[') { empty++; stringBuilder.append(chs[i]).append('\n').append(getEmpty(empty)); i++; }else if (chs[i]=='}'||chs[i]==']') { empty--; stringBuilder.append('\n').append(getEmpty(empty)).append(chs[i]); i++; }else { stringBuilder.append(chs[i]); i++; } } return stringBuilder.toString(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return json; } } private static boolean isDoubleSerialBackslash(char[] chs, int i) { int count=0; for (int j = i; j >-1; j--) { if (chs[j]=='\\') { count++; }else{ return count%2==0; } } return count%2==0; } /** * 缩进 * @param count * @return */ private static String getEmpty(int count){ StringBuilder stringBuilder=new StringBuilder(); for (int i = 0; i < count; i++) { stringBuilder.append(empty) ; } return stringBuilder.toString(); } }
相关文章推荐
- Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
- 自己写的一个打log的工具类,没啥技术含量,可以直接粘走用
- 编写一个程序,可以通过次程序完成一个表的创建操作,输入表的名称,各个列的名称及类型,输入完成后直接通过JDBC创建指定的表。
- 【简介Introduction】 DisplayTag是一个开源的自定义标签库(Custom Tag lib),他提供了直接而有效的格式化web视图层数据的有效手段。你可以在现在流行的web应用的MV
- 编写一个程序,可以通过次程序完成一个表的创建操作,输入表的名称,各个列的名称及类型,输入完成后直接通过JDBC创建指定的表。
- TextWatcher的使用 ,实现一个显示剩余输入字数功能,分享工具类CalculateUtil
- 自己做了一个json格式化工具,亲测可以使用
- 快到七夕了,分享一个C写的exe,可以直接点击运行的,效果看下图
- 编写一个程序,可以通过次程序完成一个表的创建操作,输入表的名称,各个列的名称及类型,输入完成后直接通过JDBC创建指定的表。
- 一个可以将 json 字符串 直接绑定到 view 上的Android库
- 分享一个关于jackson的Json工具类
- 简单的封装了一个OKHttp网络请求工具类,直接粘贴进去调用使用,很方便
- 分享一个将Log记录到文件中的工具类
- 编写一个程序,可以通过次程序完成一个表的创建操作,输入表的名称,各个列的名称及类型,输入完成后直接通过JDBC创建指定的表。
- 编写一个程序,可以通过次程序完成一个表的创建操作,输入表的名称,各个列的名称及类型,输入完成后直接通过JDBC创建指定的表。
- Mouse without Borders是微软的一个软件实验项目,这款软件可让鼠标自由在局域网中的多台电脑间移动,键盘输入实现无缝切换,还可以直接用鼠标相互拖拽文件。 如果经常需要同时使用两台以
- tomcat直接输入Ip和端口号就可以主动加载一个jsp页面!
- 虚拟主机中独立日志(log)空间用户是否可以直接使用?
- 记一个可以打开,关闭的log日志
- 昨天发现System.Diagnostics.Process 一样的可以打开一个网页的,直接的输入网页的地址就好了