<div dir="ltr"><span style="font-size:13px">This is a really great proposal. As an iOS developer I work with JSON almost every day since most mobile apps communicate with a backend through JSON messages. It's good to see that better JSON support is coming to Foundation so we don't have to rely on third party libraries.</span><div class="gmail_msg" style="font-size:13px"><br class="gmail_msg"></div><div class="gmail_msg" style="font-size:13px">That being said, there is one thing I don't like which is that the JSON encoding function returns Data and the decoding function takes Data.</div><div class="gmail_msg" style="font-size:13px"><br class="gmail_msg"></div><div class="gmail_msg" style="font-size:13px">It would be really great if the Foundation team could introduce a dedicated type of JSON.</div><div class="gmail_msg" style="font-size:13px">There are several advantages of working with a dedicated type.</div><div class="gmail_msg" style="font-size:13px">- The underlying data is always valid JSON</div><div class="gmail_msg" style="font-size:13px">- You can extend this type in the future with helper methods for manipulating JSON</div><div class="gmail_msg" style="font-size:13px">- It makes it explicit what you are dealing with</div><div class="gmail_msg" style="font-size:13px"><br class="gmail_msg"></div><div class="gmail_msg" style="font-size:13px">A good analogy is the URL type. You could represent an URL with a String or Data type, but by introducing a dedicated type you have the full advantages mentioned above. Data on the other hand is like a generic container which you cannot easily extend with URL or JSON specific methods.</div><div class="gmail_msg" style="font-size:13px"><br class="gmail_msg"></div><div class="gmail_msg" style="font-size:13px">Having a dedicated JSON type is also one of the reasons third party libraries like SwiftyJSON are so popular. It makes it super easy to manipulate JSON structures. And sometimes developers like would like to manipulate JSON directly.</div><div class="gmail_msg" style="font-size:13px"><br class="gmail_msg"></div><div class="gmail_msg" style="font-size:13px">If the proposal would pass in the current form, I would still use SwiftyJSON for manipulating JSON which I would rather avoid and have this all sorted on the Foundation level.</div><div class="gmail_msg" style="font-size:13px"><br class="gmail_msg"></div><div class="gmail_msg" style="font-size:13px">Just my two cents from the perspective of an iOS developer. JSON handling is really important to us so I hope you make it great!</div><div class="gmail_msg" style="font-size:13px"><br></div><div class="gmail_msg" style="font-size:13px">------------------------------------------------</div><div class="gmail_msg" style="font-size:13px"><pre style="white-space:pre-wrap">Hello Swift community,
The review of SE-0167 "Swift Encoders" begins now and runs through April 12, 2017. The proposal is available here:
<a href="https://github.com/apple/swift-evolution/blob/master/proposals/0167-swift-encoders.md">https://github.com/apple/swift-evolution/blob/master/proposals/0167-swift-encoders.md</a>
Note that this proposal is closely related to (and dependent on) SE-0166: Swift Archival & Serialization <<a href="https://github.com/apple/swift-evolution/blob/master/proposals/0166-swift-archival-serialization.md">https://github.com/apple/swift-evolution/blob/master/proposals/0166-swift-archival-serialization.md</a>>. Please read and review that proposal as well!
Reviews are an important part of the Swift evolution process. All reviews should be sent to the swift-evolution mailing list at
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution">https://lists.swift.org/mailman/listinfo/swift-evolution</a> <<a href="https://lists.swift.org/mailman/listinfo/swift-evolution">https://lists.swift.org/mailman/listinfo/swift-evolution</a>>
or, if you would like to keep your feedback private, directly to the review manager. When replying, please try to keep the proposal link at the top of the message:
Proposal link:
<a href="https://github.com/apple/swift-evolution/blob/master/proposals/0167-swift-encoders.md">https://github.com/apple/swift-evolution/blob/master/proposals/0167-swift-encoders.md</a>
Reply text
Other replies
<<a href="https://github.com/apple/swift-evolution/blob/master/process.md#what-goes-into-a-review-1">https://github.com/apple/swift-evolution/blob/master/process.md#what-goes-into-a-review-1</a>>What goes into a review?
The goal of the review process is to improve the proposal under review through constructive criticism and, eventually, determine the direction of Swift. When writing your review, here are some questions you might want to answer in your review:
What is your evaluation of the proposal?
Is the problem being addressed significant enough to warrant a change to Swift?
Does this proposal fit well with the feel and direction of Swift?
If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?
How much effort did you put into your review? A glance, a quick reading, or an in-depth study?
More information about the Swift evolution process is available at
<a href="https://github.com/apple/swift-evolution/blob/master/process.md">https://github.com/apple/swift-evolution/blob/master/process.md</a> <<a href="https://github.com/apple/swift-evolution/blob/master/process.md">https://github.com/apple/swift-evolution/blob/master/process.md</a>>
Thank you,
-Doug</pre></div></div>