5
5
import java .io .FileWriter ;
6
6
import java .io .IOException ;
7
7
import java .io .OutputStream ;
8
+ import java .util .HashMap ;
8
9
import java .util .Map ;
9
10
import java .util .Set ;
10
11
@@ -24,6 +25,8 @@ public class JsonTargetAdapter implements TranslationTarget {
24
25
25
26
private StringBuilder completeJsonString = new StringBuilder ();
26
27
28
+ private boolean sibling = false ;
29
+
27
30
/**
28
31
* {@inheritDoc}
29
32
*/
@@ -44,13 +47,6 @@ public void generateFile(Map<String, Node> root, File out) {
44
47
}
45
48
FileWriter fw = new FileWriter (out .getAbsoluteFile ());
46
49
BufferedWriter bw = new BufferedWriter (fw );
47
- // StringBuilder finalJsonString = createJsonString(root).append("}");
48
- // String[] formatOutput = finalJsonString.toString().split(",");
49
- // for (String outputString : formatOutput) {
50
- // bw.write(outputString);
51
- // bw.write(",");
52
- // bw.newLine();
53
- // }
54
50
bw .write (createJsonString (root ).append ("}" ).toString ());
55
51
bw .close ();
56
52
} catch (IOException e ) {
@@ -68,26 +64,46 @@ public void generateFile(Map<String, Node> root, File out) {
68
64
*/
69
65
public StringBuilder createJsonString (Map <String , Node > root ) {
70
66
71
- Node node ;
72
-
73
- Map <String , Node > childMap ;
67
+ Map < String , String > siblingStringMap = new HashMap <>() ;
68
+ Node node , siblingNode ;
69
+ Map <String , Node > childMap , newChildMap ;
74
70
Set <String > keySet = root .keySet ();
71
+ System .out .println (keySet );
75
72
for (String key : keySet ) {
76
73
node = root .get (key );
74
+
77
75
if (node .getText () == null && node .getChildren ().size () > 1 ) {
78
76
childMap = node .getChildren ();
79
77
Set <String > siblingNodeSet = childMap .keySet ();
80
78
this .startJsonStringBuilder .append ("\" " + key + "\" : {" ).append (Constant .NEW_LINE_CHAR );
81
79
this .endJsonStringBuilder .append ("}" );
82
80
int i = 0 ;
81
+ int j = 0 ;
83
82
for (String siblingName : siblingNodeSet ) {
84
- if (i != 0 ) {
85
- this .startJsonStringBuilder .append ("," );
83
+ siblingNode = childMap .get (siblingName );
84
+ if (siblingNode .getText () == null && siblingNode .getChildren ().size () == 1 ) {
85
+ newChildMap = siblingNode .getChildren ();
86
+ this .startJsonStringBuilder .append ("\" " + siblingName + "\" : {" ).append (Constant .NEW_LINE_CHAR );
87
+ // this.endJsonStringBuilder.append("}");
88
+ this .sibling = true ;
89
+ StringBuilder tempBuilder = createJsonString (newChildMap );
90
+ System .out .println ("tempBuilder " + tempBuilder .toString ());
91
+ this .sibling = false ;
92
+ // this.startJsonStringBuilder.append(tempBuilder.toString());
93
+ if (j < siblingNodeSet .size () - 1 ) {
94
+ this .startJsonStringBuilder .append ("," );
95
+ }
96
+ j ++;
97
+ } else {
98
+ if (i != 0 ) {
99
+ this .startJsonStringBuilder .append ("," );
100
+ }
101
+ this .startJsonStringBuilder
102
+ .append ("\" " + siblingName + "\" : " + "\" " + childMap .get (siblingName ).getText () + "\" " );
103
+ i ++;
86
104
}
87
- this .startJsonStringBuilder
88
- .append ("\" " + siblingName + "\" : " + "\" " + childMap .get (siblingName ).getText () + "\" " );
89
- i ++;
90
- }
105
+
106
+ } // for close
91
107
92
108
if (this .completeJsonString .toString ().isEmpty ()) {
93
109
this .completeJsonString .append ("{" ).append (this .startJsonStringBuilder ).append (this .endJsonStringBuilder );
@@ -103,16 +119,22 @@ public StringBuilder createJsonString(Map<String, Node> root) {
103
119
this .endJsonStringBuilder .append ("}" );
104
120
createJsonString (childMap );
105
121
} else if (node .getText () != null ) {
106
- this . startJsonStringBuilder . append ( " \" " + key + " \" : " + " \" " + node . getText () + " \" " );
107
- if (this .completeJsonString . toString (). isEmpty () ) {
108
- this .completeJsonString .append ("{" ). append ( this . startJsonStringBuilder ). append ( this . endJsonStringBuilder );
122
+
123
+ if (this .sibling ) {
124
+ this .startJsonStringBuilder .append ("\" " + key + " \" : " + " \" " + node . getText () + " \" " + "}" );
109
125
} else {
110
- this .completeJsonString .append ("," ).append (Constant .NEW_LINE_CHAR ).append (this .startJsonStringBuilder )
111
- .append (this .endJsonStringBuilder );
112
- }
126
+ this .startJsonStringBuilder .append ("\" " + key + "\" : " + "\" " + node .getText () + "\" " );
127
+ if (this .completeJsonString .toString ().isEmpty ()) {
128
+ this .completeJsonString .append ("{" ).append (this .startJsonStringBuilder ).append (this .endJsonStringBuilder );
129
+ } else {
130
+ this .completeJsonString .append ("," ).append (Constant .NEW_LINE_CHAR ).append (this .startJsonStringBuilder )
131
+ .append (this .endJsonStringBuilder );
132
+ }
113
133
114
- this .startJsonStringBuilder = new StringBuilder ();
115
- this .endJsonStringBuilder = new StringBuilder ();
134
+ this .startJsonStringBuilder = new StringBuilder ();
135
+ this .endJsonStringBuilder = new StringBuilder ();
136
+
137
+ }
116
138
117
139
}
118
140
0 commit comments