TERRYのブログ

最近は競技プログラミングにお熱。

Sponsored Link

【C#】JSON(orXML)からクラスを自動生成

今日のネタは完全にパク……いえいえGrabacrさんのスライドを見て知ったネタなのですが
ちょっと感動して単独で記事を起こす価値があると感じたのでメモ。

以前にDynamicでJSON扱う方法を紹介したのですが
やっぱり型安全じゃないしlinqが使いづらいし……でもクラス定義するのはめんどくさい……
みたいな感じで悩んでました。
しかしVisualStudioなら(少なくとも2013なら)簡単に自動生成ができちゃうみたいです。
例によってC#なので他の言語では試してません。VBとかならやってくれそうな気はしますが。


やり方は簡単で、
まず適当なJSONをコピーします。
サンプル用に適当なのを置いておきます。

{"name": "おっさん", "age": 24}

次にVisualStudioのメニューから
編集>形式を選択して貼り付け>JSONをクラスとして貼り付ける
を選択してやると……

はいできました。超簡単ですねー
あとはDataContractJsonSerializerなりJSON.NETなりで
お好きなようにデシリアライズしちゃいましょう。


ちなみに写真から分かるようにXMLでも同じことができます。
適当なXMLをコピーして……

<?xml version="1.0" encoding="utf-8" ?>
<person>
  <name>おっさん</name>
  <age>24</age>
</person>

同様に貼り付ければ

できました。
こっちの方は自動実装プロパティは使ってないみたいなのでちょっとごちゃごちゃしてます。
あとなぜかageがbyte型に…… うーむintと認識してくれても良さそうなものですが。

まあこちらもお好きなデシリアライザでデシリアライズするといいと思います。
デシリアライザの使い分けとかPascalCaseじゃないのが気持ち悪いとかは
neue.ccさんのこの記事が参考になるかと。
ではでは今日はこの辺で。