[解決済み] 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 をチェックアウトすることをお勧めします。
このドキュメントの記事
.
関連
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] Swiftで#pragmaマーク?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] Swiftを使用してアプリのバージョンとビルド番号を取得するにはどうすればよいですか?
-
[解決済み] iOSとWatchKitで画像のtintColorを変更する方法
-
[解決済み] iOSで現在のデバイスの言語を取得するには?
-
[解決済み] UITextBorderStyleNoneを使用してUITextFieldのパディングを設定する
-
[解決済み] Swiftのグローバル定数ファイル
-
[解決済み】SwiftでJSONファイルを読み込む
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[iOS]コンパイルエラー:ld: アーキテクチャ x86_64 のシンボルが見つかりません。
-
制御が非ボイド関数の終了に達する
-
IOSラーニングノート「このクラスはxxxのキーバリューコーディングに対応していません」問題解決
-
[解決済み] UITableViewの選択を無効にするにはどうすればよいですか?
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] Objective-CでNSNotificationCenterを通してメッセージを送受信する?
-
[解決済み] iPhone UITextField - プレースホルダーの文字色を変更する
-
[解決済み] ぼかしの入ったオーバーレイビューの作成
-
[解決済み] Swiftで配列に要素を追加する
-
[解決済み] info.plistファイルにNSAppTransportSecurityを追加するにはどうしたらいいですか?