[swift-evolution] [Proposal] Foundation Swift Encoders
Itai Ferber
iferber at apple.com
Thu Mar 16 17:47:13 CDT 2017
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170316/b9e904f0/attachment.html>
More information about the swift-evolution
mailing list