[解決済み] Swift 4 データが正しい形式でないため、読み取ることができませんでした。
2022-02-17 23:18:44
質問内容
JSONのパース方法を学ぶプロジェクトを開発中です。私は、以下のものをパースしようとしています。 JSON から 構造体 . 次のコードで実行しようとしているのですが、次のようなエラーが発生します。
Err データが正しい形式でないため、読み取ることができませんでした。
何が間違っているのでしょうか?また、Alamofireを使用しようとしましたが、構造体にパースする方法が見つかりませんでした。
func getData(){
let gitUrl = URL(string: "http://95.46.99.250:9095/api/v1/institution-categories")
URLSession.shared.dataTask(with: gitUrl!) { (data, response
, error) in
let data = data
print(data)
do {
let decoder = JSONDecoder()
let gitData = try decoder.decode([Root].self, from: data!)
} catch let err {
print("\nErr", err.localizedDescription)
}
}.resume()
}
構造
struct Root: Codable {
let data: [InnerItem]
}
struct InnerItem:Codable {
let id: Int?
let image: String?
let name: String?
private enum CodingKeys : String, CodingKey {
case id = "id", image = "image", name = "name"
}
}
JSON
{
"data": [
{
"id": 1,
"name": "Пабы и бары",
"image": "http://95.46.99.250:9095/storage/photos/[email protected]"
},
{
"id": 2,
"name": "Кафе",
"image": "http://95.46.99.250:9095/storage/photos/[email protected]"
},
{
"id": 3,
"name": "Ночной клуб",
"image": "http://95.46.99.250:9095/storage/photos/0201f7523bc2028f174710b51379e432.png"
},
{
"id": 4,
"name": "Ресторан",
"image": "http://95.46.99.250:9095/storage/photos/[email protected]"
},
{
"id": 5,
"name": "Караоке-клуб",
"image": "http://95.46.99.250:9095/storage/photos/microphone.png"
},
{
"id": 6,
"name": "Суши-бар",
"image": "http://95.46.99.250:9095/storage/photos/sushi.png"
},
{
"id": 7,
"name": "Пиццерии",
"image": "http://95.46.99.250:9095/storage/photos/pizza.png"
},
{
"id": 8,
"name": "Кальянная",
"image": "http://95.46.99.250:9095/storage/photos/c111d1e5ad6b90b61ac36836d220ebba.png"
},
{
"id": 9,
"name": "Общая",
"image": "http://95.46.99.250:9095/storage/photos/Group [email protected]"
}
]
}
解決方法は?
これを試してみてください
let gitData = try decoder.decode(Root.self, from: data!)
データをトラバースする
for singleData in gitData.data where (singleData.name ?? "") == "Cafe" {
print(singleData.image)
}
関連
-
[解決済み] EXC_CORPSE_NOTIFY シンボルのクラッシュが発生しました、追跡するには?
-
[解決済み] Xcodeで "No such module "というエラーが出るが、フレームワークはある
-
[解決済み] 指定されたホスト名を持つサーバーが見つからなかった
-
[解決済み] ERROR ITMS-9000: "Redundant Binary Upload. 列車 '1.0' のビルドバージョン '1.0' のバイナリアップロードが既に存在します" と表示されました。
-
[解決済み] selector' の引数が '@objc' メソッド、プロパティ、またはイニシャライザを参照していない
-
[解決済み] 条件付きバインディング:letエラーの場合 - 条件付きバインディングのイニシャライザーはOptional型でなければならない
-
[解決済み] React native - connection has no connection handler エラーの意味?
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] 正しい」JSONの日付形式とは?
-
[解決済み] Swiftの精密文字列フォーマット指定子
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】NSURLErrorDomainエラーコードの説明
-
[解決済み] Swiftエラー。変数がそれ自身の初期値内で使用されている
-
[解決済み] Cordova Camera iOSの問題。NOT_FOUND_ERR
-
[解決済み] Xcodeのロギング。"Metal API Validation Enabled"
-
[解決済み] MacOSとXcodeをアップデートすると、Xcode 8.1の「No matching provisioning profiles found」が表示される。
-
[解決済み] #ifdef DEBUG 対 #if DEBUG
-
[解決済み] CocoaPodsでポッド「Firebase/Core」の互換バージョンが見つからなかった|cloud_firestore, Flutter
-
[解決済み] iOS 9 : ユニバーサルアプリの警告「アプリがフルスクリーンを必要としない限り、すべてのインターフェイスの向きをサポートする必要があります」。
-
[解決済み] あなたのリクエストはエラーを発生させました。[newNullResponse]?
-
[解決済み] Swift 4 データが正しい形式でないため、読み取ることができませんでした。