public Number parseNumber ( ) { get ( ) ; int start = this . pos ; boolean isDouble = false ; if ( check ( ' ' ) || check ( ' ' ) ) { pos ++ ; } outer : while ( pos < s . length ( ) ) { switch ( s . charAt ( pos ) ) { case ' ' : case ' ' : case ' ' : case ' ' : case ' ' : case ' ' : case ' ' : case ' ' : case ' ' : case ' ' : pos ++ ; break ; case ' ' : isDouble = true ; parseFraction ( ) ; break ; case ' ' : case ' ' : isDouble = true ; parseExponent ( ) ; break ; default : break outer ; } } try { if ( isDouble ) { return Double . valueOf ( s . substring ( start , pos ) ) ; } Long val = Long . valueOf ( s . substring ( start , pos ) ) ; if ( val <= Integer . MAX_VALUE && val >= Integer . MIN_VALUE ) { return val . intValue ( ) ; } return val ; } catch ( NumberFormatException e ) { throw new JSONParseException ( s , start , e ) ; } }
Parses a number .