在 Swift 4 中使用 Codable 與 JSONEncoder 和 JSONDecoder
讓我們以電影結構為例,在這裡我們將結構定義為 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 是喜劇,冒險和動畫女巫包含 4 評級中的 5。
編碼
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 {
}
JSONEncoder 將為我們提供用於檢索 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,我們將收回 Movie 物件。因此,我們可以獲得該物件中儲存的所有值。
輸出將如下:
Name : Up
Rating : 4