Advertisement
Guest User

Untitled

a guest
Sep 17th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.01 KB | None | 0 0
  1. import Foundation
  2.  
  3. protocol Receivable {
  4. init?(from: Data)
  5. }
  6.  
  7. extension Receivable where Self: Decodable {
  8. init?(from jsonData: Data) {
  9. guard let decoded = try? JSONDecoder().decode(Self.self, from: jsonData) else { return nil }
  10. self = decoded
  11. }
  12. }
  13.  
  14. extension Array where Element: Receivable & Decodable {
  15. init?(from jsonData: Data) {
  16. guard let decoded = try? JSONDecoder().decode(Array<Element>.self, from: jsonData) else { return nil }
  17. self = decoded
  18. }
  19. }
  20.  
  21. struct TestObject2: Codable, Receivable {
  22. let id: String
  23. let pass: String
  24. }
  25.  
  26. // TEST
  27. let jsonData = "{\"id\":\"hi\", \"pass\":\"omg\"}".data(using: .utf8)!
  28. // try! JSONEncoder().encode(TestObject2(id: "hi", pass: "omg"))
  29. print(TestObject2(from: jsonData))
  30.  
  31. let jsonArrayData = "[{\"id\":\"hi\", \"pass\":\"omg\"}, {\"id\":\"bye\", \"pass\":\"good\"}]".data(using: .utf8)!
  32. //try! JSONEncoder().encode([TestObject2(id: "hi", pass: "omg"), TestObject2(id: "hi2", pass: "omg!!!")])
  33. print([TestObject2](from: jsonArrayData))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement