[swift-corelibs-dev] [swift-users] I ve found a serious Bug in JSONEncoder (SR-6131) and would like to fix it.

Lily Vulcano millenomi at apple.com
Tue Dec 19 12:45:37 CST 2017



> On Dec 19, 2017, at 10:27 AM, Jon Shier via swift-corelibs-dev <swift-corelibs-dev at swift.org> wrote:
> 
> I’m pretty sure JSON isn’t localized, so this isn’t a bug. Using anything but a . as a decimal separator isn’t valid JSON. 

JSONEncoder seems to be producing that content, so this does look like a Swift library issue.

Benoit: if you have a patch that fixes the issue, feel free to submit it as a GitHub pull request (*) against master and we’ll discuss it (and kick off testing) from there. I also opened <https://bugs.swift.org/browse/SR-6642> so that it isn’t forgotten. ✾

(*) https://help.github.com/articles/creating-a-pull-request/

> 
> 
> Jon
> 
>> On Dec 18, 2017, at 1:04 PM, Jordan Rose via swift-users <swift-users at swift.org <mailto:swift-users at swift.org>> wrote:
>> 
>> (moving to more relevant list)
>> 
>>> On Dec 18, 2017, at 08:51, Benoit Pereira da silva via swift-users <swift-users at swift.org <mailto:swift-users at swift.org>> wrote:
>>> 
>>> Dear all
>>> 
>>> I've found a serious Bug in JSONEncoder SR-6131 <https://bugs.swift.org/browse/SR-6631> and would like to fix it.
>>> This bug cause JSON encoding issues on Double when using a local that does not use dot as decimal separator e.g « fr_FR » (we use a coma)
>>> 
>>> Demonstration of the issue : 
>>> 
>>> import Foundation
>>> 
>>> // Required to call setLocale
>>> import Darwin
>>> 
>>> // Let's set to french
>>> setlocale(LC_ALL,"fr_FR")
>>>  
>>> struct Shot:Codable{
>>>     let seconds:Double
>>> }
>>>  
>>> let shot = Shot(seconds: 1.1)
>>>  
>>> do{
>>>     let data = try JSONEncoder().encode(shot)
>>>     if let json =  String(data:data, encoding:.utf8){
>>>         // the result is : "{"seconds":1,1000000000000001}"
>>>         // The decimal separator should not be "," but "."
>>>         print(json)
>>>     }
>>> }catch{
>>>     print("\(error)")
>>> }
>>>  
>>> exit(EX_OK)
>>> 
>>> 
>>> 
>>> 
>>> I would like to propose my fix, test it and, but i’m not mastering the contribution mechanism.
>>> 
>>> Where should i start? 
>>> 
>>> I ve forked https://github.com/benoit-pereira-da-silva/swift-corelibs-foundation <https://github.com/benoit-pereira-da-silva/swift-corelibs-foundation>
>>> I have a very simple Unit test that demonstrates the issue.
>>> 
>>> How can i test my 
>>> 
>>> 
>>> Thanks
>>> 
>>> 
>>> 
>>> 
>>> 
>>> Benoit Pereira da Silva
>>> Ultra Mobile Developer & Movement Activist
>>> Développeur Ultra Mobile & Militant du mouvement
>>> https://pereira-da-silva.com <https://pereira-da-silva.com/>
>>> 
>>> <bannerp.jpg>
>>> 
>>> 
>>> 
>>> ✄ --------------------------------
>>> This e-mail is confidential. Distribution, copy, publication or use of this information for any purpose is prohibited without agreement of the sender.
>>> Ce message est confidentiel. Toute distribution, copie, publication ou usage des informations contenues dans ce message sont interdits sans agrément préalable de l'expéditeur.
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> swift-users mailing list
>>> swift-users at swift.org <mailto:swift-users at swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-users <https://lists.swift.org/mailman/listinfo/swift-users>
>> 
>> _______________________________________________
>> swift-users mailing list
>> swift-users at swift.org <mailto:swift-users at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-users <https://lists.swift.org/mailman/listinfo/swift-users>
> _______________________________________________
> swift-corelibs-dev mailing list
> swift-corelibs-dev at swift.org <mailto:swift-corelibs-dev at swift.org>
> https://lists.swift.org/mailman/listinfo/swift-corelibs-dev <https://lists.swift.org/mailman/listinfo/swift-corelibs-dev>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-corelibs-dev/attachments/20171219/740d464a/attachment.html>


More information about the swift-corelibs-dev mailing list