diff --git a/Foundation/JSONSerialization.swift b/Foundation/JSONSerialization.swift index 7cd40d1128..3c7ad5b120 100644 --- a/Foundation/JSONSerialization.swift +++ b/Foundation/JSONSerialization.swift @@ -305,7 +305,7 @@ private struct JSONWriter { let formatter: CFNumberFormatter formatter = CFNumberFormatterCreate(nil, CFLocaleCopyCurrent(), kCFNumberFormatterNoStyle) CFNumberFormatterSetProperty(formatter, kCFNumberFormatterMaxFractionDigits, NSNumber(value: 15)) - CFNumberFormatterSetFormat(formatter, "0.###############"._cfObject) + CFNumberFormatterSetFormat(formatter, "0.0##############"._cfObject) return formatter }() @@ -842,11 +842,6 @@ private struct JSONReader { return nil } - if doubleResult == doubleResult.rounded() { - return (shouldUseReferenceType ? NSNumber(value: Int(doubleResult)) : Int(doubleResult), - doubleDistance) - } - return (shouldUseReferenceType ? NSNumber(value: doubleResult) : doubleResult, doubleDistance) } diff --git a/TestFoundation/TestJSONSerialization.swift b/TestFoundation/TestJSONSerialization.swift index 56fc53ad36..4771fceab0 100644 --- a/TestFoundation/TestJSONSerialization.swift +++ b/TestFoundation/TestJSONSerialization.swift @@ -1447,8 +1447,8 @@ extension TestJSONSerialization { let data = decimalArray.data(using: String.Encoding.utf8) let result = try JSONSerialization.jsonObject(with: data!, options: []) as? [Any] XCTAssertEqual(result?[0] as! Double, 12.1) - XCTAssertEqual(result?[1] as! Int, 10) - XCTAssertEqual(result?[2] as! Int, 0) + XCTAssertEqual(result?[1] as! Double, 10.0) + XCTAssertEqual(result?[2] as! Double, 0.0) XCTAssertEqual(result?[3] as! Double, 0.0001) XCTAssertEqual(result?[4] as! Int, 20) XCTAssertEqual(result?[5] as! Int, Int.max)