需求:希望调试阶段能够看到日志信息,如进行网络请求则输出返回的json串,但是当json过长时log打印不全,所以进行如下处理:
String readData = response.body();
if(readData.length()>0){
readData = readData.replaceAll(",",",\n");
readData = readData.replaceAll("\\[","[\n");
readData = readData.replaceAll("\\]","\n]");
readData = readData.replaceAll("\\{","{\n");
readData = readData.replaceAll("\\}","\n}");
int start = 0;
int maxLog = 500;
LogUtil.i("realbody:");
while (readData.length()>start){
String temp = "";
if(readData.length()>start+maxLog){
temp = readData.substring(start,start+maxLog);
}else{
temp = readData.substring(start);
}
int index = getBestIndex(temp);
if(index!=-1 && temp.length()==maxLog && index < temp.length())
temp = readData.substring(start,start+index);
else
index = temp.length()-1;
start =start+index+1;
LogUtil.i(temp);
}
}
private int getBestIndex(String temp) {
int index = temp.lastIndexOf("}");
int index2 = temp.lastIndexOf("]");
int index3 = temp.lastIndexOf(",")+1;
return
代码解析:
1.遇到逗号,[,],{,}进行换行(方便看,如果讨厌换行太多,则可以把逗号那个去掉)。
readData = readData.replaceAll(",",",\n");
readData = readData.replaceAll("\\[","[\n");
readData = readData.replaceAll("\\]","\n]");
readData = readData.replaceAll("\\{","{\n");
readData = readData.replaceAll("\\}","\n}");
2.确定一次最多输出的log长度(注意观察logcat,输出太多会显示不全)
maxLog = 500;
3.获取字串
String temp = "";
if(readData.length()>start+maxLog){
temp = readData.substring(start,start+maxLog);
}else{
temp = readData.substring(start);
}
这段好理解,就不解释了
4.智能截取,因为固定截取长度会出现单词截取不全的情况,因此使用getBestIndex()获取最后的逗号,],}位置,然后进行截取,尽量保证词完整性。
int index = getBestIndex(temp);
if(index!=-1 && temp.length()==maxLog && index < temp.length())
temp = readData.substring(start,start+index);
else
index = temp.length()-1;
start =start+index+1;
5.ps:一点建议
建议只在测试环境下进行输出,正式上线环境不要进行输出。