     }
     
     private mutating func parseArray(index: Int) throws -> (JSON, Int) {
-        var cursor = eatWhiteSpace(index)
+        var cursor = index
         
         guard string[cursor] == Parser.leftbracket else {
             // invalid json "[" start array

        }
        
        while cursor != string.endIndex {
            let (_key, afterKey) = try _parseString(cursor)
            guard let key = _key else {
                // parse key error, invalid json
                throw ParseError("invalid json: expect string at \(cursor)")

    }
    
    private mutating func parseNumber(index: Int) throws -> (JSON, Int) {
        let cursor = index
        
        if let (double, distance) = parseDouble(string.baseAddress.advancedBy(cursor)) {
            return (JSON(double), cursor + distance)
