?(なんと表現するのが正しいのでしょうか...)以下のようなjsonをデシリアライズするときのお話です。meme"の部分が動的に変わっていくケースを想定しています。動的な名前の下には、userId、name、ageとfamilyを並べました。familyは、Personの配列です。(familyの中のpersonにfamilyがないとかは...サンプルなので書いてないだけです)。事前準備jsonをデシリアライズするPersonのモデルを以下のようにしました。jsonのファイルを読み込んでデシリアライズするという流れをいくつかのパターンで実装していきます。地味にこねこね...ファイルを読み込んで、JObjectにパースし、そこからListにパースします。listをnewするコードなんて書きたくないし、LINQ使えよって突っ込みたくなるので...以下のようにちょっとだけ修正しました。JsonConverterを使ってデシリアライズJsonConverterを使ってパースの処理を抜き出しちゃいます。PersonクラスをデシリアライズするためのJsonConverterを継承した、PersonsConverterクラスを作ります。地味にこねこね時代のコードに比べると、まーすっきりします。JsonConverterを使ってデシリアライズ+αもうちょっと実用的な使い方として思いつくのは、Attributeにつけるパターンです(ケースバイケースですけど)。Listを以下のようにPersonsModelの中に入れました。JsonConverterのAttributeをつけます。Attributeで指定している型、PersonsModelConverterクラスはこの後作ります。次は、PersonsModelConverterクラスを書きましょう。「その1」で作ったPersonsConverterちょっと変更するだけです。PersonsConverterではListを出力していましたが、PersonsModelを出力するよう変えただけです(14行目あたり)。結果として、PersonsModelクラスは、AttributeでPersonsModelConverterを使うように指定しているため、実際にデシリアライズする使うときは以下のコードになります。普通にJsonConvert.DeserializeObjectしているだけとなります。JsonConvert.DeserializeObject<PersonsModel>(json);ModelのBehaviourをModelに依存させているという点で、ビジネスロジックに絡むところをすっきりさせれたといえますかね(個人的主観です)。当ブログに掲載されている情報は、必ずしも正確性や安全性を保証するものではありません。掲載された内容によって生じた損害等の一切の責任を負いかねます。当ブログに掲載されている情報は個人の見解であり、所属する団体・組織は一切関係ありません。引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。