活跃农民
- 积分
- 937
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2020-11-25
- 最后登录
- 1970-1-1
|
- public static ArrayList<String> prettyJSON(String a) {
- Stack<Indent> st = new Stack<Indent>();
- int tabCount = 0;
- ArrayList<String> ans = new ArrayList<String>();
- for (int i = 0; i < a.length(); i++) {
- if (a.charAt(i) == '{' || a.charAt(i) == '[') {
- ans.add(get(tabCount).append(a.charAt(i)).toString());
- tabCount++;
- } else if (a.charAt(i) == '}' || a.charAt(i) == ']') {
- tabCount--;
- ans.add(get(tabCount).append(a.charAt(i)).toString());
- } else if (a.charAt(i) == ' ') {
- } else if (a.charAt(i) == ',') {
- ans.set(ans.size() - 1, ans.get(ans.size() - 1).concat(","));
- } else {
- int start = i;
- while (i < a.length() && (a.charAt(i) != ',' && a.charAt(i) != '[' && a.charAt(i) != '{' && a.charAt(i) != ']' && a.charAt(i) != '}')) {
- i++;
- }
- if (i >= a.length()) {
- break;
- }
- if (a.charAt(i) == ',') {
- ans.add(get(tabCount).toString() + a.substring(start, i + 1));
- } else if (a.charAt(i) == '}' || a.charAt(i) == ']') {
- ans.add(get(tabCount).toString() + a.substring(start, i));
- i--;
- } else if (a.charAt(i) == '{' || a.charAt(i) == '[') {
- ans.add(get(tabCount).toString() + a.substring(start, i));
- i--;
- }
- }
- }
- return ans;
- }
- private static StringBuilder get(int tabCount) {
- StringBuilder toAdd = new StringBuilder();
- for (int j = 0; j < tabCount; j++) {
- toAdd.append('\t');
- }
- return toAdd;
- }
- class Indent {
- char c;
- int tab;
- Indent(char c, int tab) {
- this.c = c;
- this.tab = tab;
- }
- }
- public static void main(String[] args) {
- String s = "{\"id\": \"0002\",\"type\": \"donut\",\"name\": \"Cake\",\"ppu\": 0.55, \"batters\":{\"batter\":[{ \"id\": \"1001\", \"type\": \"Regular\" },{ \"id\": \"1002\", \"type\": \"Chocolate\" }]},\"topping\":[{ \"id\": \"5001\", \"type\": \"None\" },{ \"id\": \"5002\", \"type\": \"Glazed\" }]}";
- List<String> res = Solution.prettyJSON(s);
- for (String str : res) {
- System.out.println(str);
- }
- }
复制代码 |
|