@@ -52,7 +52,7 @@ public List<Object> parseList(String json) {
5252
5353private  List <Object > parseListInternal (int  nesting , String  json ) {
5454List <Object > list  = new  ArrayList <>();
55- json  = trimLeadingCharacter ( trimTrailingCharacter ( json , ']'  ) , '[ ' ).trim ();
55+ json  = trimEdges ( json , '['  , '] ' ).trim ();
5656for  (String  value  : tokenize (json )) {
5757list .add (parseInternal (nesting  + 1 , value ));
5858}
@@ -70,37 +70,39 @@ private Object parseInternal(int nesting, String json) {
7070return  parseMapInternal (nesting  + 1 , json );
7171}
7272if  (json .startsWith ("\" " )) {
73- return  trimTrailingCharacter ( trimLeadingCharacter ( json , '"' ) , '"' );
73+ return  trimEdges ( json , '"' , '"' );
7474}
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 );
8876}
8977
9078private  Map <String , Object > parseMapInternal (int  nesting , String  json ) {
9179Map <String , Object > map  = new  LinkedHashMap <>();
92- json  = trimLeadingCharacter ( trimTrailingCharacter ( json , '}'  ) , '{ ' ).trim ();
80+ json  = trimEdges ( json , '{'  , '} ' ).trim ();
9381for  (String  pair  : tokenize (json )) {
9482String [] values  = StringUtils .trimArrayElements (StringUtils .split (pair , ":" ));
9583Assert .state (values [0 ].startsWith ("\" " ) && values [0 ].endsWith ("\" " ),
9684"Expecting double-quotes around field names" );
97- String  key  = trimLeadingCharacter ( trimTrailingCharacter ( values [0 ], '"' ) , '"' );
85+ String  key  = trimEdges ( values [0 ], '"' , '"' );
9886Object  value  = parseInternal (nesting , values [1 ]);
9987map .put (key , value );
10088}
10189return  map ;
10290}
10391
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+ 
104106private  static  String  trimTrailingCharacter (String  string , char  c ) {
105107if  (!string .isEmpty () && string .charAt (string .length () - 1 ) == c ) {
106108return  string .substring (0 , string .length () - 1 );
@@ -115,6 +117,10 @@ private static String trimLeadingCharacter(String string, char c) {
115117return  string ;
116118}
117119
120+ private  static  String  trimEdges (String  string , char  leadingChar , char  trailingChar ) {
121+ return  trimTrailingCharacter (trimLeadingCharacter (string , leadingChar ), trailingChar );
122+ }
123+ 
118124private  List <String > tokenize (String  json ) {
119125List <String > list  = new  ArrayList <>();
120126int  index  = 0 ;
0 commit comments