> On Jun 12, 2017, at 8:32 AM, Ben Rimmington via swift-evolution 
> <[email protected]> wrote:
> 
> The new `JSONSerialization.WritingOptions.sortedKeys` option was mentioned at 
> WWDC.
> 
> "What's New in Cocoa" [33:03 ... 33:33]
> <https://developer.apple.com/videos/play/wwdc2017/207/?time=1983>
> 
> <https://developer.apple.com/documentation/foundation/jsonserialization.writingoptions>
> 
> When the `sortedKeys` option is available, can it be used **by default** in 
> the `JSONEncoder`?
> 
> Otherwise, can the `JSONEncoder.OutputFormatting` enum have extra cases?
> 

We intend to make this option available to JSONEncoder as well, but since the 
underlying feature was tied to the OS release we couldn’t pre-announce it.

One nit pick: I don’t think default is the right answer, because sorting has a 
performance cost and we think it’s better to opt-in to the more expensive 
operations.

- Tony

> case compact
> case compactWithSortedKeys
> case prettyPrinted
> case prettyPrintedWithSortedKeys
> 
> <https://developer.apple.com/documentation/foundation/jsonencoder.outputformatting>
> 
> -- Ben
> 
>> On 16 Mar 2017, at 22:47, Itai Ferber <[email protected]> wrote:
>> 
>> The sorted order of keys is an implementation detail of 
>> PropertyListSerialization which JSONSerialization does not share.
>> This would require a change in JSONSerialization, which is possible, but out 
>> of scope for this work specifically. It would have to go through review.
>> 
>> [FWIW, the key ordering isn’t changing at random; JSONSerialization writes 
>> keys in the order that it receives them (sorted in the order that 
>> NSDictionary stores them, based on hash). If you want this to not interfere 
>> with your Git repo (on a more immediate timescale), you can probably do 
>> something like adding a pre-commit Git hook to lint the file as needed. But 
>> I digress, this is totally off-topic.]
>> 
>>> On 16 Mar 2017, at 14:57, Ben Rimmington wrote:
>>> 
>>> Sorry, I actually meant that keys would be ordered **alphabetically** (as 
>>> they are with PropertyListSerialization).
>>> 
>>> I'm storing output from JSONSerialization in a git repository, and when I 
>>> add/remove a single key-value the entire file changes, due to keys being 
>>> reordered (seemingly at random).
>>> 
>>> -- Ben
>>> 
>>>> Itai Ferber wrote:
>>>> 
>>>> By stable ordering, you mean dictionaries with keys being output in the 
>>>> order that they were encoded?
>>>> Potentially, but this would require additional work as neither Swift 
>>>> dictionaries nor NSMutableDictionary support this (reasonable seeing as 
>>>> dictionaries are by definition not sorted), and the current implementation 
>>>> uses JSONSerialization as the concrete serializer. Certainly not 
>>>> impossible, though.
>>>> 
>>>>> On 16 Mar 2017, at 8:49, Ben Rimmington wrote:
>>>>> 
>>>>> <https://github.com/apple/swift-evolution/pull/640>
>>>>> 
>>>>> Could the `JSONEncoder.OutputFormatting.prettyPrinted` case include the 
>>>>> **stable ordering** of keys?
>>>>> 
>>>>> -- Ben
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to