@@ -42,7 +42,7 @@ public class BasicJsonParser extends AbstractJsonParser {
42
42
43
43
@ Override
44
44
public Map <String , Object > parseMap (String json ) {
45
- return tryParse (() -> parseMap (json , this :: parseMapInternal ), Exception .class );
45
+ return tryParse (() -> parseMap (json , ( jsonToParse ) -> parseMapInternal ( 0 , jsonToParse ) ), Exception .class );
46
46
}
47
47
48
48
@ Override
@@ -67,7 +67,7 @@ private Object parseInternal(int nesting, String json) {
67
67
return parseListInternal (nesting + 1 , json );
68
68
}
69
69
if (json .startsWith ("{" )) {
70
- return parseMapInternal (json );
70
+ return parseMapInternal (nesting , json );
71
71
}
72
72
if (json .startsWith ("\" " )) {
73
73
return trimTrailingCharacter (trimLeadingCharacter (json , '"' ), '"' );
@@ -87,15 +87,15 @@ private Object parseInternal(int nesting, String json) {
87
87
return json ;
88
88
}
89
89
90
- private Map <String , Object > parseMapInternal (String json ) {
90
+ private Map <String , Object > parseMapInternal (int nesting , String json ) {
91
91
Map <String , Object > map = new LinkedHashMap <>();
92
92
json = trimLeadingCharacter (trimTrailingCharacter (json , '}' ), '{' ).trim ();
93
93
for (String pair : tokenize (json )) {
94
94
String [] values = StringUtils .trimArrayElements (StringUtils .split (pair , ":" ));
95
95
Assert .state (values [0 ].startsWith ("\" " ) && values [0 ].endsWith ("\" " ),
96
96
"Expecting double-quotes around field names" );
97
97
String key = trimLeadingCharacter (trimTrailingCharacter (values [0 ], '"' ), '"' );
98
- Object value = parseInternal (0 , values [1 ]);
98
+ Object value = parseInternal (nesting , values [1 ]);
99
99
map .put (key , value );
100
100
}
101
101
return map ;
0 commit comments