格式化JSON数据
本文仅限内网无法访问json.cn
没写注释,后面补充。
package com.xiaohao.toJson;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class FormatJson {
public static void main(String[] args) {
stream();
}
public static void stream() {
BufferedReader br;
BufferedWriter bw;
try {
br = new BufferedReader(
new InputStreamReader(
new FileInputStream("C:/Users/sjzl06/Desktop/toJson/request.txt")));
String line = null;
String toJson = "";
while((line = br.readLine()) != null) {
toJson = formatJ(line);
}
bw = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("C:/Users/sjzl06/Desktop/toJson/respon.txt")));
bw.write(toJson);
bw.flush();
bw.close();
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static String formatJ(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 ',':
jsonFormatStr.append(c + "\n");
break;
case '}':
case ']':
jsonFormatStr.append("\n");
level--;
jsonFormatStr.append(getLevelStr(level));
jsonFormatStr.append(c);
default:
jsonFormatStr.append(c);
break;
}
}
return jsonFormatStr.toString();
}
private static String getLevelStr(int level) {
StringBuffer levelStr = new StringBuffer();
for(int j = 0; j < level; j++) {
levelStr.append("\t");
}
return levelStr.toString();
}
}