1 Reply
      Latest reply on Jan 10, 2017 1:44 PM by eskimo
      darkv Level 1 Level 1 (0 points)



        I encountered a formatting problem during serialization of an object to JSON. Example code is


        do {
          let double = Double(1.23)
          let json = try JSONSerialization.data(withJSONObject: ["double" : double])
          print(String(data: json, encoding: .utf8)!)
        } catch {


        and the printed result on the command line is




        So directly printing the double value uses a "." as decimal point (wanted behavior) but serialized to JSON it is using a ",". To make it even more confusing, if I debug the code within Xcode I am getting a "." decimal point for JSON too.


        I tried changing the Locale in code, setting system settings to "." as decimal point, … all to no avail. Does anyone have an idea?

        • Re: JSONSerialization formatting of Double
          eskimo Apple Staff Apple Staff (13,325 points)

          What platform are you targeting?  And if it’s macOS, what type of project?

          By way of reference, I changed my iOS simulator to German and it doesn’t reproduce the problem you’re seeing (both lines of output contain “1.23”).  Just to be sure I had the locale settings right, I added the following line of code and it prints “1,23”.

          print(NumberFormatter.localizedString(from: double as NSNumber, number: .decimal))

          Share and Enjoy

          Quinn “The Eskimo!”
          Apple Developer Relations, Developer Technical Support, Core OS/Hardware
          let myEmail = "eskimo" + "1" + "@apple.com"