問題タブ [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 投票する
4 に答える
2376 参照

ios - Swift4 でこの JSON を検証する方法は?

エラーオブジェクトまたは期待値のいずれかが含まれているstatus値と値を含む連想配列で応答をラップする API があります。datadata

悪い反応:

正常な応答:

これらの応答を検証したい:

エラーで応答オブジェクトをデコードしようとすると、常に失敗します:オブジェクトを Swift type としてExpected to decode Data but found a dictionary instead.デコードできると思っていましたが、実際には辞書です。dataData[String: Any]

Data1) API から受け取った をどのように検証できますか?

data2) JSON 応答の " " 部分のみDataを型として抽出できる方法はありUserますか?statusdata

0 投票する
1 に答える
3745 参照

swift - Date およびその他の組み込み型の Codable 機能を拡張するにはどうすればよいですか?

Date.init(from:Decoder)サーバーから渡されたさまざまな形式を処理するために、の機能を拡張しようとしています。日付が文字列としてエンコードされる場合もあれば、その文字列が辞書にネストされる場合もあります。Swift のソースによると、次のDateようにデコード/エンコードされます。

そこで、次のようにその機能を拡張しようとしました。

ただし、この関数は呼び出されません。次に、次のようにデコードKeyedDecodingContainerを変更するために拡張しようとしました。Datedecode(_:forKey)

ただし、 をDate呼び出してエンコードした a をデコードするためにこれを呼び出すと、データが ではないというエラーが表示container.encode(date, forKey: .date)されます。関数 forは Double を明示的にエンコードするため、何が起こっているのか完全に困惑しています。Swift ソース コードの呼び出しをたどってみましたが、呼び出しがないようです。typeMismatchDoubleencode(to:)DatedecodeDate.init(from:Decoder)

だから私は疑問に思っています、Dateこの種の拡張機能を介して型がデコードされる方法を変更することは可能ですか? Dateすべての単一モデルでカスタム デコードを複製する唯一のオプションはありますか? いったい何を呼ぶのinit(from:Decoder)

0 投票する
1 に答える
158 参照

json - Swift 4 Decodable を使用して、プロパティ値が混在する JSON を解析する

Swift 4 Decodable を使用するようにアプリを更新しようとしています - そして、次のような子の値を持つ JSON API からデータを取得しています:

  • 子オブジェクト
  • 文字列
  • Int

Json API の応答は次のとおりです。

以下を使用して解析しようとしました: どちらも文字列である id プロパティと key プロパティを参照するだけで機能します。

fields オブジェクトを Struct にデコードするにはどうすればよいですか?