 
     func testJSON() {
         expectSuccess(parser: JSONParser<StringReader>.json(),
-                      input: " [  null  , true,false  ,\"test\", [{}, { }, { \" \"  : \"23\" ,\"\": 42}]] ",
+                      input: " [  null  , true,false  ,\"test\", [{}, { }, { \" \"  : \"23\" ,\"\": 42.23}]] ",
                       expected: JSON.array([.null, .bool(true), .bool(false), .string("test"),
                                             .array([.object([]),
                                                     .object([]),
                                                     .object([
                                                         (" ", .string("23")),
-                                                        ("", .int(42))
+                                                        ("", .number(42.23))
                                                         ])])]))
     }
 

        return opt(char("-") ^^ String.init) ~ intPart() ~ opt(fracPart()) ~ opt(expPart()) ^^ {
            let (minus, intPart, fracPart, expPart) = $0
            let value = optString("", minus) + intPart + optString(".", fracPart) + optString("", expPart)
            guard let int = Int(value) else {
                throw MapError.failure("Invalid number: \(value)")
            }
            return .int(int)
        }
    }


        return true
    case (.string(let a), .string(let b)):
        return a == b
    case (.number(let a), .number(let b)):
        return a == b
    case (.bool(let a), .bool(let b)):
        return a == b
