この記事は何?
JSON形式で記述されたデータをSwiftプログラミングで扱う方法です。
実行環境
macOS10.15 Catalina beta7
Xcode11 beta7
コンテキスト
Xcodeプロジェクトのリソースとして、JSON形式のファイル someData.json
があることを前提にしています。
コード全体
プロジェクトのどこかに、次のように記述したSwiftファイルを配置しておくと、JSONデータをでコートした内容が割り当てられた定数 someData
を呼び出すことができます。
JSONデータをコードで扱う
let someData: [SomeDecodableType] = load("someData.json")
func load<T: Decodable>(_ filename: String, as type: T.Type = T.self) -> T {
let data: Data
let decoder = JSONDecoder()
guard let file = Bundle.main.url(forResource: filename, withExtension: nil) else {
fatalError("No \(filename) in main bundle.")
}
data = try! Data(contentsOf: file)
return try! decoder.decode(type, from: data)
}
someData
グローバル定数として someData
を定義しています。
let someData: [SomeDecodableType] = load("someData.json")
: [SomeDecodableType]
と明示することで、load()
関数内で扱う方が推論されます。
なお、SomeDecodableType
が Codable
プロトコルに準拠している必要があります。
JSONファイルの構成と一致していることも注意してください。