@@ -52,7 +52,7 @@ public List<Object> parseList(String json) {
52
52
53
53
private List <Object > parseListInternal (int nesting , String json ) {
54
54
List <Object > list = new ArrayList <>();
55
- json = trimLeadingCharacter ( trimTrailingCharacter ( json , ']' ) , '[ ' ).trim ();
55
+ json = trimEdges ( json , '[' , '] ' ).trim ();
56
56
for (String value : tokenize (json )) {
57
57
list .add (parseInternal (nesting + 1 , value ));
58
58
}
@@ -70,37 +70,39 @@ private Object parseInternal(int nesting, String json) {
70
70
return parseMapInternal (nesting + 1 , json );
71
71
}
72
72
if (json .startsWith ("\" " )) {
73
- return trimTrailingCharacter ( trimLeadingCharacter ( json , '"' ) , '"' );
73
+ return trimEdges ( json , '"' , '"' );
74
74
}
75
- try {
76
- return Long .valueOf (json );
77
- }
78
- catch (NumberFormatException ex ) {
79
- // ignore
80
- }
81
- try {
82
- return Double .valueOf (json );
83
- }
84
- catch (NumberFormatException ex ) {
85
- // ignore
86
- }
87
- return json ;
75
+ return parseNumber (json );
88
76
}
89
77
90
78
private Map <String , Object > parseMapInternal (int nesting , String json ) {
91
79
Map <String , Object > map = new LinkedHashMap <>();
92
- json = trimLeadingCharacter ( trimTrailingCharacter ( json , '}' ) , '{ ' ).trim ();
80
+ json = trimEdges ( json , '{' , '} ' ).trim ();
93
81
for (String pair : tokenize (json )) {
94
82
String [] values = StringUtils .trimArrayElements (StringUtils .split (pair , ":" ));
95
83
Assert .state (values [0 ].startsWith ("\" " ) && values [0 ].endsWith ("\" " ),
96
84
"Expecting double-quotes around field names" );
97
- String key = trimLeadingCharacter ( trimTrailingCharacter ( values [0 ], '"' ) , '"' );
85
+ String key = trimEdges ( values [0 ], '"' , '"' );
98
86
Object value = parseInternal (nesting , values [1 ]);
99
87
map .put (key , value );
100
88
}
101
89
return map ;
102
90
}
103
91
92
+ private Object parseNumber (String json ) {
93
+ try {
94
+ return Long .valueOf (json );
95
+ }
96
+ catch (NumberFormatException ex ) {
97
+ try {
98
+ return Double .valueOf (json );
99
+ }
100
+ catch (NumberFormatException ex2 ) {
101
+ return json ;
102
+ }
103
+ }
104
+ }
105
+
104
106
private static String trimTrailingCharacter (String string , char c ) {
105
107
if (!string .isEmpty () && string .charAt (string .length () - 1 ) == c ) {
106
108
return string .substring (0 , string .length () - 1 );
@@ -115,6 +117,10 @@ private static String trimLeadingCharacter(String string, char c) {
115
117
return string ;
116
118
}
117
119
120
+ private static String trimEdges (String string , char leadingChar , char trailingChar ) {
121
+ return trimTrailingCharacter (trimLeadingCharacter (string , leadingChar ), trailingChar );
122
+ }
123
+
118
124
private List <String > tokenize (String json ) {
119
125
List <String > list = new ArrayList <>();
120
126
int index = 0 ;
0 commit comments