For me definitely +1 as it's getting near to what I need to call the Decoding usable.
> On Dec 18, 2017, at 5:51 PM, Arsen Gasparyan via swift-evolution > <swift-evolution@swift.org> wrote: > > Hello everyone, > > I’m suggesting to add a new way to encode/decode JSON properties for > relevantly complex data formats such as regular expressions, well-known text, > hex colours, custom date formats. > > The problem: > > Image you have a struct called House > > struct House { > let color: UIColor > } > > and it has a properly called color and the color represented in JSON as hex > value (#ffffff). Currently to make it working you have to extract the > underline value (string with a hex value) and then try to make a UIColor from > it. It works but it makes you to copy/past a lot of code and it leads to > problems. Also it shifts focus from what to decode to how to decode. > > The suggested solution: > > I suggest that we have to introduce protocols for classes that will > encapsulate transformation from a source data type to a destination data > type. The source data types are all existing data that support of decoding. > > We will provide only protocols (one for decoding and one for encoding) and > users will be able to create transformers for their own data types. > > The implementation: > > The implementation is fairly easy. We only need introduce two protocols > (encoding/decoding) and add a method to KeyedEncodingContainerProtocol that > will accept a key and a transformer. In the method we will extract source > data from JSON and then will ask the transformer to try to convert it to the > desire data type. > > Example of the decoding protocol: > > protocol DecodingTransformer { > associatedtype Input: Decodable > associatedtype Output > func transform(_ decoded: Input) throws -> Output > } > > > Inspired by: https://github.com/Hearst-DD/ObjectMapper#custom-transforms > <https://github.com/Hearst-DD/ObjectMapper#custom-transforms> > > Cheers, > Arsen > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution