問題タブ [jsonencoder]

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 に答える
394 参照

swift - Encodables を Swift 辞書に保存する

モデルオブジェクトをディクショナリに保存しようとしていて、ディクショナリ全体を使用JSONEncoderしてデータにシリアライズし、続いて文字列にシリアライズして保存したいと考えています。

アイデアは、すぐに使用できる Swift 4 を使用Encodableして、ディクショナリに追加するものを確実にシリアル化することです。これには、プリミティブとカスタム オブジェクト (それ自体は に準拠しますEncodable) を含めることができます。

チャレンジは、辞書をどのタイプであると宣言する必要があるかです。

  • を使用する[String: Any]と、 をエンコードする方法がわからずAny、実際の具象型にキャストする必要がある場合、ジェネリックスの目的が無効になります
  • を使用する[String: Encodable]と、実行時に Encodable がそれ自体に準拠していないと言ってクラッシュしますが、具体的な型が必要なので理解できます

これに取り組むために、ラッパーを作成することを考えました。つまり、関連付けられた型を持つプロトコルまたはジェネリック型の値を持つ構造体です。

しかし、問題は残ります。前述の辞書の型を宣言している間、具体的な型を提供する必要があります..

ここで 'X' は何であるべきですか? または、これを達成する正しい方法は何ですか? 私は何が欠けていますか?

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

swift - Swift 4 で JSONEncoder を使用して Dictionary をエンコードする方法

JSONEncoder で Dictionary を json にエンコードしたい。Request のようで、辞書をパラメータとして受け取り、それを http body として json にエンコードします。コードは次のようになります。

しかし、このコードはエラーが発生します

致命的なエラー: Encodable がそれ自体に準拠していないため、Dictionary<String, Encodable> は Encodable に準拠していません。エンコードまたはデコードするには、具象型を使用する必要があります。

これをエンコード可能にするにはどうすればよいですか?