Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Foundation
- protocol Receivable {
- init?(from: Data)
- }
- extension Receivable where Self: Decodable {
- init?(from jsonData: Data) {
- guard let decoded = try? JSONDecoder().decode(Self.self, from: jsonData) else { return nil }
- self = decoded
- }
- }
- extension Array where Element: Receivable & Decodable {
- init?(from jsonData: Data) {
- guard let decoded = try? JSONDecoder().decode(Array<Element>.self, from: jsonData) else { return nil }
- self = decoded
- }
- }
- struct TestObject2: Codable, Receivable {
- let id: String
- let pass: String
- }
- // TEST
- let jsonData = "{\"id\":\"hi\", \"pass\":\"omg\"}".data(using: .utf8)!
- // try! JSONEncoder().encode(TestObject2(id: "hi", pass: "omg"))
- print(TestObject2(from: jsonData))
- let jsonArrayData = "[{\"id\":\"hi\", \"pass\":\"omg\"}, {\"id\":\"bye\", \"pass\":\"good\"}]".data(using: .utf8)!
- //try! JSONEncoder().encode([TestObject2(id: "hi", pass: "omg"), TestObject2(id: "hi2", pass: "omg!!!")])
- print([TestObject2](from: jsonArrayData))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement