問題タブ [decodable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2598 参照

json - Swift Codable: 同じルート オブジェクトを持つアイテムの異なる配列をデコードする

現在、次のような JSON をデコードしようとしています。

この特定のタイプの JSON のデコード プロセスは非常に単純です。私はちょうどこのようなものが必要です:

今私が直面している問題は、サーバーのすべての応答が上記の JSON と同じ構造を持っているが、アイテムの種類が異なることです。そのため、そうである場合もありますが、ユーザー エンドポイントを呼び出した場合let items: [Item]もそうなる可能性があります。let items: [User]

アイテム配列を変更するだけですべてのエンドポイントに対して上記の迅速なコードを記述すると、コードの不要な複製になるため、カスタム デコーダーを作成しました。

"items"配列ではなく単一のオブジェクトのみが含まれている場合、デコーダーは完全に機能します。

が配列の場合items、次のエラーが発生します。

typeMismatch(Swift.Dictionary, Swift.DecodingError.Context(codingPath: [__lldb_expr_151.KimaiAPIResponseKeys.result], debugDescription: "Dictionary をデコードすると予想されますが、代わりに配列が見つかりました。", 基本エラー: nil))

デコーダーを変更してアイテムの配列を操作する方法がわかりません。機能するバージョンと機能しないバージョンの JSON を使用して Playground ファイルを作成しました。見て、試してみてください: Decodable.playground

ご協力ありがとうございました!