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

Matthew Johnson matthew at anandabits.com
Tue Jul 25 16:37:56 CDT 2017


> On Jul 25, 2017, at 2:08 PM, David Hart via swift-evolution <swift-evolution at swift.org> wrote:
> 
> 
>> On 25 Jul 2017, at 18:45, Itai Ferber via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> 
>> 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.
>> 
> As a side note, if this could be pushed even further to allow encoding/decoding to/from a Stream, it would allow me to use Codable on a project where I’m parsing JSON files in the hundreds of Mbs. I have no choice but to use a streaming parser.

+1 to eventually moving to a streaming implementation.  This is something I have wanted at times as well.
>> 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 <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 
> _______________________________________________
> 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/e3253e50/attachment.html>


More information about the swift-evolution mailing list