@@ -52,8 +52,6 @@ public class U<T> extends com.github.underscore.U<T> {
5252 private static String lower = "[a-z\\ xdf-\\ xf6\\ xf8-\\ xff]+" ;
5353 private static java .util .regex .Pattern reWords = java .util .regex .Pattern .compile (
5454 upper + "+(?=" + upper + lower + ")|" + upper + "?" + lower + "|" + upper + "+|[0-9]+" );
55- private static final Set <Character > NUMBER_CHARS = new HashSet <Character >(
56- Arrays .asList ('.' , 'e' , 'E' , '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' ));
5755
5856 static {
5957 String [] deburredLetters = new String [] {
@@ -2111,23 +2109,16 @@ private static Map<String, Object> replaceKeys(Map<String, Object> map) {
21112109 private static Object makeObject (Object value ) {
21122110 final Object result ;
21132111 if (value instanceof List ) {
2114- List <Map < String , Object > > values = newArrayList ();
2112+ List <Object > values = newArrayList ();
21152113 for (Object item : (List ) value ) {
2116- values .add (replaceKeys ((Map <String , Object >) item ));
2114+ values .add (item instanceof Map ? replaceKeys ((Map <String , Object >) item ) : item );
21172115 }
21182116 result = values ;
21192117 } else if (value instanceof Map ) {
21202118 result = replaceKeys ((Map <String , Object >) value );
21212119 } else {
21222120 String stringValue = String .valueOf (value );
2123- boolean onlyNumbers = true ;
2124- for (char ch : stringValue .toCharArray ()) {
2125- if (!NUMBER_CHARS .contains (ch )) {
2126- onlyNumbers = false ;
2127- break ;
2128- }
2129- }
2130- result = onlyNumbers ? Xml .stringToNumber (stringValue ) : value ;
2121+ result = stringValue .matches ("^-?\\ d*([.eE])?\\ d+$" ) ? Xml .stringToNumber (stringValue ) : value ;
21312122 }
21322123 return result ;
21332124 }
@@ -2155,7 +2146,7 @@ private static Object makeObjectSelfClose(Object value) {
21552146 if (value instanceof List ) {
21562147 List <Object > values = newArrayList ();
21572148 for (Object item : (List ) value ) {
2158- values .add (replaceSelfCloseWithNull ((Map ) item ));
2149+ values .add (item instanceof Map ? replaceSelfCloseWithNull ((Map ) item ) : item );
21592150 }
21602151 result = values ;
21612152 } else if (value instanceof Map ) {
0 commit comments