原json字符串
[{"item":[{"name":"北京","key":"热门"},{"name":"上海","key":"热门"},{"name":"深圳","key":"热门"},{"name":"广州","key":"热门"},{"name":"武汉","key":"热门"}],"title":"热门城市","type":"hot"}]
我想得到这种格式
[
{
"item":[
{
"name":"北京",
"key":"热门"
},
{
"name":"上海",
"key":"热门"
},
{
"name":"深圳",
"key":"热门"
},
{
"name":"广州",
"key":"热门"
},
{
"name":"武汉",
"key":"热门"
}
],
"title":"热门城市",
"type":"hot"
}
]
怎么做呢?用以下代码,具体的自己可以进行修改
/**
* 得到格式化json数据 退格用\t 换行用\r
*/
public static String format(String jsonStr) {
int level = 0;
StringBuffer jsonForMatStr = new StringBuffer();
for(int i=0;i<jsonStr.length();i++){
char c = jsonStr.charAt(i);
if(level>0&&'\n'==jsonForMatStr.charAt(jsonForMatStr.length()-1)){
jsonForMatStr.append(getLevelStr(level));
}
switch (c) {
case '{':
case '[':
jsonForMatStr.append(c+"\n");
level++;
break;
case ',':
char d = jsonStr.charAt(i-1);
if(d == '"' || d == ']' || d == '}'){
jsonForMatStr.append(c+"\n");
} else {
jsonForMatStr.append(c);
}
break;
case '}':
case ']':
jsonForMatStr.append("\n");
level--;
jsonForMatStr.append(getLevelStr(level));
jsonForMatStr.append(c);
break;
default:
jsonForMatStr.append(c);
break;
}
}
return jsonForMatStr.toString();
}
private static String getLevelStr(int level){
StringBuffer levelStr = new StringBuffer();
for(int levelI = 0;levelI<level ; levelI++){
levelStr.append("\t");
}
return levelStr.toString();
}
参考:https://blog.youkuaiyun.com/dushu990/article/details/80680831
中秋国庆快到了,顺便推荐一个抢票软件 ,没抢到票的可以试试。