サーチ…
前書き
Codableは、Xcode 9、iOS 11、Swift 4で追加されています。Codableは、JSONなどの外部表現との互換性のために、データ型をエンコード可能およびデコード可能にするために使用されます。
エンコードとデコードの両方をサポートするためのコーディング可能な使用、エンコード可能なプロトコルとデコード可能なプロトコルを組み合わせたCodableへの適合を宣言します。このプロセスは、あなたのタイプをコード化可能にすることとして知られています。
Swift 4でのJSONEncoderとJSONDecoderでのコーディングの使用
Movieの構造を例にしましょう。ここでは、構造をCodableとして定義しました。したがって、簡単にエンコードしてデコードすることができます。
struct Movie: Codable {
enum MovieGenere: String, Codable {
case horror, skifi, comedy, adventure, animation
}
var name : String
var moviesGenere : [MovieGenere]
var rating : Int
}
私たちは次のように映画からオブジェクトを作成することができます:
let upMovie = Movie(name: "Up", moviesGenere: [.comedy , .adventure, .animation], rating : 4)
upMovieには「Up」という名前があり、movieGenereはコメディー、冒険、アニメーション魔女には5のうち4つの評価が含まれています。
エンコード
JSONEncoderは、データ型のインスタンスをJSONオブジェクトとしてエンコードするオブジェクトです。 JSonencoderは、Codableオブジェクトをサポートしています。
// Encode data
let jsonEncoder = JSONEncoder()
do {
let jsonData = try jsonEncoder.encode(upMovie)
let jsonString = String(data: jsonData, encoding: .utf8)
print("JSON String : " + jsonString!)
}
catch {
}
JSONncoderは、JSON文字列を取得するために使用されるJSONデータを提供します。
出力文字列は次のようになります:
{
"name": "Up",
"moviesGenere": [
"comedy",
"adventure",
"animation"
],
"rating": 4
}
デコード
JSONDecoderは、JSONオブジェクトからデータ型のインスタンスをデコードするオブジェクトです。オブジェクトをJSON文字列から戻すことができます。
do {
// Decode data to object
let jsonDecoder = JSONDecoder()
let upMovie = try jsonDecoder.decode(Movie.self, from: jsonData)
print("Rating : \(upMovie.name)")
print("Rating : \(upMovie.rating)")
}
catch {
}
JSONDataをデコードすることで、ムービーオブジェクトが返されます。だから私たちは、そのオブジェクトに保存されているすべての値を取得することができます。
出力は次のようになります。
Name : Up
Rating : 4