[swift-evolution] Idea: Exposing _JSONEncoder and _JSONDecoder functionality

Itai Ferber iferber at apple.com
Tue Jul 25 11:45:10 CDT 2017


Hi Morten,

This is something we’ve considered adding and may do so in the future 
— however, this will require additional API review and will not make 
it in time for the Swift 4.0 release.
The usage of `JSONSerialization` as the serialization backend is a 
current implementation detail, and may change in future releases; it 
would, for instance, be more efficient to read/write JSON as we 
encode/decode, instead of trying to collect the entire object graph 
before performing the next step.

We could also introduce something like a general 
`StructureEncoder`/`StructureDecoder` which performs this conversion, as 
this might be useful outside of just JSON. (For instance, 
`PropertyListEncoder`/`PropertyListDecoder` currently do something 
similar.)

So yes, this is under consideration for future API. :)

— Itai

On 25 Jul 2017, at 0:44, Morten Bek Ditlevsen via swift-evolution wrote:

> In the implementation og JSONEncoder and JSONDecoder we have the 
> internal
> functionality that encodes Codable types to a structure that is 
> compatible
> with JSONSerialization.
> The JSONEncoder then calls JSONSerialization on this structure - and
> JSONDecoder vice versa.
> In some situations it could be nice to just encode or decode to or 
> from
> this structure - and not have the final encoding to Data performed. 
> For
> instance if you have some library that hands you a structure in this 
> format
> and you would like to perform decoding.
>
> Can anyone else see the relevance of exposing this functionality? It 
> could
> be exposed by wrapping _JSONEncoder in a public JSONStructureEncoder 
> or
> something similar.
>
> Sincerely,
> /morten
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170725/0463e753/attachment.html>


More information about the swift-evolution mailing list