swift Codableの使い方
import Foundation
let hoge = "{\"id\":1,\"family_id\":12345,\"user\":{\"id\":20,\"display_name\":\"hoge\",\"name\":\"hoge\",\"text\":\"自己紹介文\",\"mail_address\":\"user@hoge.jp\",\"auth\":\"member\",\"status\":0,\"created_at\":\"2019-01-09T16:42:43+09:00\",\"image\":{\"id\":1,\"url\":\"https://hoge.cloudfront.net/image/user_images/normal/fugaUTC.jpg\",\"url_thumbnail\":\"https://foo.cloudfront.net/image/user_images/normal/bar.jpg\"}},\"hogehoge\":{\"id\":20,\"display_name\":\"kudo\",\"name\":\"hoge\",\"text\":\"自己紹介文\",\"mail_address\":\"user@hoge.jp\",\"auth\":\"member\",\"status\":0,\"created_at\":\"2019-01-09T16:42:43+09:00\",\"image\":{\"id\":1,\"url\":\"https://hoge.cloudfront.net/image/user_images/normal/fugaUTC.jpg\",\"url_thumbnail\":\"https://foo.cloudfront.net/image/user_images/normal/bar.jpg\"}},\"status\":\"are\",\"description\":\"一部古い情報を修正しました\",\"updated_at\":\"2018-11-07T06:53:13Z\","}"
こういうCodableを定義します。
struct User: Codable {
let id: Int
let displayName: String
let name: String
let text: String
let mailAddress: String
let auth: String
let status: Int
let createdAt: Date
let image: Image
}
struct Image: Codable {
let id: Int
let url: URL
let urlThumbnail: URL
}
struct Kuso: Codable {
let id: Int
let familyId: Int
let applicant: User
let approver: User
let status: String
let description: String
let updatedAt: Date
let applicantNameAtApplied: String
let approverNameAtApproved: String
}
snakecaseに返還させる方法
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
Date型を受け取る方法
decoder.dateDecodingStrategy = .iso8601
あとはデコード
let boke = try! decoder.decode(Kuso.self, from: hoge.data(using: .utf8)!)
print(boke)