1. ホーム
  2. ios

[解決済み] swiftでJSONファイルをパースするには?

2023-01-19 15:41:10

質問

JSON ファイルを解析して、テーブルビューでオブジェクトのリストを使用したいと考えています。誰かswiftでJSONファイルをパースするコードを共有することができます。

どのように解決するのですか?

この回答は Swift 5.3 および iOS 14.4 SDK 用に最後に修正されました。


すでに取得したJSONデータがある場合、そのデータをもとに JSONDecoder を使ってデコードし、自分の Decodable モデル(またはモデルのコレクション)にデコードします。

let data: Data = /* obtain your JSON data */
let model = try JSONDecoder().decode(Model.self, from: data)

このようなモデルは Decodable プロトコルに準拠し、プロパティと JSON 辞書のキーの間の正しいマッピングを含んでいる必要があります。例として、"Wa" で始まる都市の検索結果を含む以下のJSON配列を考えてみましょう。

[
    {
        "id": 123,
        "city": "Washington",
        "region": "D.C.",
        "country": "United States"
    },
    {
        "id": 456,
        "city": "Warsaw",
        "region": "Mazowieckie",
        "country": "Poland"
    },
    ...
]

そのためには、正しい型の正しいプロパティを含むモデルを作成する必要があります。Web APIを使用している場合、そのドキュメントがここで大きな助けとなるでしょう。

struct SearchResult: Decodable {
    let id: Int
    let city: String
    let region: String
    let country: String
}

次に、データをデコードするために JSONDecoder :

let results = try JSONDecoder().decode([SearchResult].self, from: data)

デコードされた検索結果の新しい配列が与えられたら、以下のうちの一つをコールします。 UITableView の関数を呼び出してデータを再読み込みしてください。なお decode 関数はエラーを投げることがあり、それを何らかの方法で処理しなければならないことに注意してください。

Swift でカスタムタイプをデコードする方法と Codable API をチェックアウトすることをお勧めします。 このドキュメントの記事 .