さまよえる、Android

Androidのプログラミングで便利なことや残しておきたいことを残しておく。もしオススメのライブラリがあったら教えてくださいね。

構造体にjsonメソッドとjsonプロパティを拡張すると便利????

import UIKit

protocol Json : Codable {
    func json(key: String) -> String!
    var json:String! { get }

}

extension Json {
    func json(key: String) -> String! {
        let encoder = JSONEncoder()
        encoder.dateEncodingStrategy = .iso8601
        encoder.outputFormatting = .prettyPrinted
        guard let data = try? encoder.encode([key : self]) else {
            return nil
        }
        return String(data: data, encoding: .utf8)!
    }
}

extension Json {
    var json: String! {
        let encoder = JSONEncoder()
        encoder.dateEncodingStrategy = .iso8601
        encoder.outputFormatting = .prettyPrinted
        guard let data = try? encoder.encode(self) else {
            return nil
        }
        return String(data: data, encoding: .utf8)!
    }
}

struct User: Json {
    let name: String
    let age: Int
}

struct Admin: Json {
    let user: User
    let permission: Int
}

let user = User(name: "田中", age: 9)
let admin = Admin(user: user, permission: 5)

print(admin.json(key: "top") ?? "失敗")
print(admin.json ?? "top")