tl;dr
JSONでREST通信する際に使うプロトコル(Equatable/Codable)の整理をする
Equatable
equalsなどの同値比較をする際に、structなどの構造体の中身が同値かどうかを比較できるようにするプロトコル。
struct SomeStruct: Equatable {
let key1: String
let key2: String
}
上記のように書くことで、インスタンスの中身の比較ができる。
Codable
JSON→struct間を自動で変換するためのプロトコル。
JSONと同じキー構成のstructにCodableを継承させれば下記のような形で変換できる。
let data = json.data(using: .utf8)
let struct = try? JSONDecoder().decode(SomeStruct.self, from: data)
使い所
JSONでやりとりするREST通信の際には、受け取ったJSONはCodableを使ってstructに変換して利用できる。
テスト観点でも返り値の比較をstruct同士の比較でできるので便利