Avatar
>PropertyWrapperによる解決だったら、ボイラープレート数が増えてはいないので JSONのプロパティとModelのプロパティが1:1に定まる、という条件ならおもちさんの話は通る JSONを単純に型付けしたDTOを作って、そこからModelに投射するというのも良い案だし、 「CatV1, V2をCatDTOにしてからCatを作る」という例はむしろそのアプローチが最大に活きるパターン
11:37 AM
それでも、DTOを噛ませずContainerから直接作りたいと思うことはけっこう自分はあって、たぶんその状況が普段生まれるか生まれないかが視点の違いになってると思う
11:43 AM
要は、何層もネストしたDTOのコンバートってキツいよねってことなんだけど { a: { b: { c: { d: { e: { x: "", y: "", z: "", i: 1 }}}}}} { a: { b: { c: { d: { e: { x: "", y: "", z: "", b: true }}}}}} Eの中身の一部が、場合によって変化するとします EにDTOを噛ませる場合、連鎖的にD,C,B,AもDTOを噛ませなきゃいけない 同じ構造の型を作るの辛い だったらEには init(from:) を書いて、全部素のDecodableにしたい そのとき、x,y,zが変わらないのはわかりきってるのに、そこでも右辺にも型指定しなきゃいけないのはめんどい (edited)
11:46 AM
こういったデコードが多く発生するプロジェクトだと、Containerの扱いの細かい部分が気になってくるわけです 逆に、JSON色付け係ばっかでEncodableが出てくることはほぼなかったので、 そこをCodableProxyで解決できるんだって言われても有難みがあんまり気にならない (edited)