6
6
import lombok .Data ;
7
7
import lombok .RequiredArgsConstructor ;
8
8
9
- public class SimdJsonParser2 {
9
+ public class SimdJsonParserWithFixPath {
10
10
11
11
@ Data
12
12
@ RequiredArgsConstructor
@@ -33,9 +33,8 @@ static class JsonNode {
33
33
// every time json string is processed, currentVersion will be incremented by 1
34
34
private long currentVersion = 0 ;
35
35
// pruning, when alreadyProcessedCols == NUM
36
- private long parseCols = 0 ;
37
36
38
- public SimdJsonParser2 (String ... args ) {
37
+ public SimdJsonParserWithFixPath (String ... args ) {
39
38
parser = new SimdJsonParser ();
40
39
expectParseCols = args .length ;
41
40
row = new JsonNode [expectParseCols ];
@@ -66,7 +65,6 @@ public String[] parse(byte[] buffer, int len) {
66
65
if (buffer == null || buffer .length == 0 ) {
67
66
return emptyResult ;
68
67
}
69
- this .parseCols = 0 ;
70
68
this .currentVersion ++;
71
69
this .ptr = root ;
72
70
this .buffer = buffer ;
@@ -100,9 +98,6 @@ private String parseField() {
100
98
}
101
99
102
100
private void parseElement (String expectFieldName ) {
103
- if (parseCols >= expectParseCols ) {
104
- return ;
105
- }
106
101
// if expectFieldName is null, parent is map, else is list
107
102
if (expectFieldName == null ) {
108
103
expectFieldName = parseField ();
@@ -123,7 +118,6 @@ private void parseElement(String expectFieldName) {
123
118
default -> {
124
119
ptr .setValue (skip (true ));
125
120
ptr .setVersion (currentVersion );
126
- ++parseCols ;
127
121
}
128
122
}
129
123
ptr = ptr .getParent ();
@@ -133,12 +127,11 @@ private void parseMap() {
133
127
if (ptr .getChildren () == null ) {
134
128
ptr .setValue (skip (true ));
135
129
ptr .setVersion (currentVersion );
136
- ++parseCols ;
137
130
return ;
138
131
}
139
132
ptr .setStart (bitIndexes .peek ());
140
133
bitIndexes .advance ();
141
- while (bitIndexes .hasNext () && buffer [bitIndexes .peek ()] != '}' && parseCols <= expectParseCols ) {
134
+ while (bitIndexes .hasNext () && buffer [bitIndexes .peek ()] != '}' ) {
142
135
parseElement (null );
143
136
if (buffer [bitIndexes .peek ()] == ',' ) {
144
137
bitIndexes .advance ();
@@ -148,7 +141,6 @@ private void parseMap() {
148
141
if (ptr .isLeaf ()) {
149
142
ptr .setValue (new String (buffer , ptr .getStart (), ptr .getEnd () - ptr .getStart () + 1 ));
150
143
ptr .setVersion (currentVersion );
151
- ++parseCols ;
152
144
}
153
145
bitIndexes .advance ();
154
146
}
@@ -157,13 +149,12 @@ private void parseList() {
157
149
if (ptr .getChildren () == null ) {
158
150
ptr .setValue (skip (true ));
159
151
ptr .setVersion (currentVersion );
160
- ++parseCols ;
161
152
return ;
162
153
}
163
154
ptr .setStart (bitIndexes .peek ());
164
155
bitIndexes .advance ();
165
156
int i = 0 ;
166
- while (bitIndexes .hasNext () && buffer [bitIndexes .peek ()] != ']' && parseCols <= expectParseCols ) {
157
+ while (bitIndexes .hasNext () && buffer [bitIndexes .peek ()] != ']' ) {
167
158
parseElement ("" + i );
168
159
if (buffer [bitIndexes .peek ()] == ',' ) {
169
160
bitIndexes .advance ();
@@ -174,7 +165,6 @@ private void parseList() {
174
165
if (ptr .isLeaf ()) {
175
166
ptr .setValue (new String (buffer , ptr .getStart (), ptr .getEnd () - ptr .getStart () + 1 ));
176
167
ptr .setVersion (currentVersion );
177
- ++parseCols ;
178
168
}
179
169
bitIndexes .advance ();
180
170
}
0 commit comments