Codable
struct Language: Codable {
var name: String
var version: Int
}
// Encode
let swift = Language(name: "Swift", version: 4)
let encodeData = try JSONEncoder().encode(swift)
print(encodeData) // 28 bytes
let jsonString = String(data: encodeData, encoding: .utf8)
print(jsonString) // Optional("{\"name\":\"Swift\",\"version\":4}")
// Decode
let decodeData = try JSONDecoder().decode(Language.self, from: encodeData)
print(decodeData.name, decodeData.version) // Swift 4