This project has retired. For details please refer to its
Attic page.
JsonPrettyPrinter xref
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.chemistry.opencmis.server.support.filter;
20
21
22
23
24
25
26 public class JsonPrettyPrinter {
27
28 private int indent = 0;
29 private String indentStr;
30 private StringBuffer sb = new StringBuffer();
31
32 public JsonPrettyPrinter () {
33 init(3);
34 }
35
36 public JsonPrettyPrinter (int indent) {
37 init(indent);
38 }
39
40 private void init(int indent) {
41 StringBuffer sb = new StringBuffer();
42 for (int i=0; i<indent; i++)
43 sb.append(" ");
44 indentStr = sb.toString();
45 }
46
47 public String prettyPrint(String jsonStr) {
48 for (int i=0; i<jsonStr.length(); i++) {
49 char c = jsonStr.charAt(i);
50 writeChar(c);
51 }
52 return sb.toString();
53 }
54
55 private void writeChar(char c) {
56 if (((char) c) == '[' || ((char) c) == '{') {
57 sb.append(c);
58 sb.append('\n');
59 indent++;
60 addIndent();
61 } else if (((char) c) == ',') {
62 sb.append(c);
63 sb.append('\n');
64 addIndent();
65 } else if (((char) c) == ']' || ((char) c) == '}') {
66 sb.append('\n');
67 indent--;
68 addIndent();
69 sb.append(c);
70 } else {
71 sb.append(c);
72 }
73
74 }
75
76 private void addIndent() {
77 for (int i = 0; i < indent; i++) {
78 sb.append(indentStr);
79 }
80 }
81
82 public static void main(String[] args) {
83 args = new String[2];
84 args[0] = "[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";
85 args[1] = "{\"abc\":{\"def\":{\"ghi\":{\"jkl\":[5,{\"mno\":7}]}}}}";
86 for (String s : args) {
87 JsonPrettyPrinter pp = new JsonPrettyPrinter();
88 System.out.println("Pretty Printing JSON String: " + s);
89 String result = pp.prettyPrint(s);
90 System.out.println("Pretty Printed JSON: " + result);
91 }
92 }
93 }