はじめに
CodableとはEncode・Decodeの両方を兼ね備えたプロトコルである。
JsonEncoderクラスとJsonDecoderクラスを利用してCodableに準拠した型からJSONへのエンコードとJSONからCodableに準拠した型へのデコードを行う。
ソースコード
Swift
//Codableに準拠した型
struct SomeStruct: Codable {
let value: Int
}
let someStruct = SomeStruct(value: 1)
//Somestruct型をJSONバイト列にエンコード
let jsonEncoder = JSONEncoder()
let encodedJsonData = try! jsonEncoder.encode(someStruct)
print(encodedJsonData) // 11 bytes >>> JSONバイト列になった
print(type(of: encodedJsonData)) //Data型
//出力結果を分かりやすく把握するため、Data型からString型へ変換
let encodedJsonString = String(data: encodedJsonData, encoding: .utf8)!
print(encodedJsonString) // {"value":1} と出力される → Somestruct(value: 1)がJSONにエンコードされた
//先ほどエンコードしたJSONバイト列(値)をSwiftの値へデコード(元に戻す)する
let jsonDecoder = JSONDecoder()
//ここでいうJSONバイト列とは先ほどエンコードしたencodedJsonDataのこと
//decode(Somestruct.self)と定義したのは、Somestructオブジェクトごと参照するため .selfと付ける
let decodedSomeStruct = try! jsonDecoder.decode(SomeStruct.self, from: encodedJsonData)
print(decodedSomeStruct) // Somestruct(value: 1)
}
おわりに
間違え等がございましたらぜひコメント欄でご指摘ください。
参考記事
Codable | Apple Developer Documentation
[増補改訂第3版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plusシリーズ)
↑引用元
石川 洋資 (著), 西山 勇世 (著)
発行者:片岡 巌
出版社:技術評論社
印刷/製本:日経印刷株式会社
開発環境
- Xcode-13.4.1
- Swift version 5.7