Swiftでプロジェクトの中に含まれるJSONファイルを読み込む


Swiftでプロジェクトの中に含まれるJSONファイルを読み込む方法です。 まずプロジェクトに読み込みたい JSON ファイルを追加します。 画像のように追加します。

Project

追加した JSON ファイルの中身は以下です。

{
    "number": 143,
    "name": "Snorlax"
}

次に追加した JSON ファイルをデコードするためのstructをJSON の中身に合わせて作成します。 ボタンを押すとプロジェクト中の pokemon.json を読み込み、Pokemon構造体にデコードし、State を更新させて文字列を表示しています。

ReadJSON

ContentView.swift

import SwiftUI

struct Pokemon: Decodable {
    let number: Int
    let name: String
}

struct ContentView: View {
    @State var number: String = ""
    @State var name: String = ""
    
    var body: some View {
        VStack {
            Button("Read Data") {
                let bundlePath = Bundle.main.path(forResource: "pokemon", ofType: "json")!
                let jsonData = try! String(contentsOfFile: bundlePath).data(using: .utf8)!
                let pokemon = try! JSONDecoder().decode(Pokemon.self, from: jsonData)
                
                number = String(pokemon.number)
                name = pokemon.name
            }
            
            Text("Number: \(number)")
            Text("Name: \(name)")
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}