問題タブ [generic-derivation]
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.
json - オブジェクトを明確にせずに circe で ADT をデコードする方法
次のような ADT があるとします。
CirceDecoder[Event]
のインスタンスのデフォルトの一般的な派生では、入力 JSON に、どのケース クラスが表されているかを示すラッパー オブジェクトが含まれていることが想定されます。
この動作は、2 つ以上のケース クラスが同じメンバー名を持っている場合にあいまいさを心配する必要がないことを意味しますが、常に望んでいるとは限りません。各ケース クラスを試す必要があります。
ラッパーなしで ADTをエンコードおよびデコードするにはどうすればよいですかEvent
(できれば、エンコーダーとデコーダーを最初から作成する必要はありません)。
(この質問はかなり頻繁に出てきます。たとえば、今朝の Gitterに関する Igor Mazor とのディスカッションを参照してください。)
scala - ケース クラス フィールドのデフォルト値にアクセスする方法は?
Decoder[A]
を使用して、任意のケース クラスの型 () のインスタンスを派生させたいと考えていますshapeless
。
ケースクラスのデフォルト値を考慮しない場合、基本的なアプローチを使用してすべてがうまくいっています。
今、デコードできないフィールドのデフォルト値を使用できるようにしたいと考えています。この場合、私はこのアプローチを試しました(追加の抽象化レイヤーを追加します):
だから、私の質問は、同じことを達成することは可能ですが、追加の抽象化レイヤーを使用せずに (DecoderWithDefaults
この場合のように) ですか? 何かのようなもの: