C#

[C#]Json.NETを使ったJsonの生成

投稿日:2018年9月22日 更新日:

Json.NET その1

ThinkAbout関連画像
どうも@EaEです!

最近は日々の業務もそうですが、それ以外にもいろいろと予定を詰め込みすぎている今日この頃です...

ちょっとお腹いっぱいって感じですw

さて、今日はJson.NETを使ったJsonの生成についてまとめていきます。

今回の案件でIFにJsonを使うことになり、いろいろと試行錯誤したのでまとめていきます。

1.Json.NETをプロジェクトに追加

まずは、Json.NETをプロジェクトに追加していきます。

NuGetから「Json.NET」と検索すると、[Newtonsoft.Json]がヒットするはずなので、それをインストールします。

正常にインストールできるとpackages.configに[Newtonsoft.Json]が追加されているはずです。

 

2.クラスをJsonへシリアライズ

次は必要なusingディレクティブを追加していきます。

シリアライズに必要なのは、[Newtonsoft.Json]の名前空間になります。

上のサンプルプログラムを実行することで、非常に簡単にJsonが生成できます。

 

3.Jsonのデシリアライズ

JObjectへデシリアライズ

Jsonのデシリアライズを行う場合、JObjectへデシリアライズする方法と、既存のクラスへデシリアライズする方法があります。

まずはJObjectへデシリアライズ方法です。

JObjectは[Newtonsoft.Json.Linq]の名前空間定義されています。Collectionと同様にLinqによるデータ操作が可能になっています。

JObjectのデシリアライズも簡単にできました。

ですが、実際にデータのやりとりにJsonを使う場合に、受け取ったデータを既存のクラスにデシリアライズして、そのままDBに入れたいな。と思うわけです。

特にEntity Frameworkを利用している場合、POCOオブジェクトはすでに定義されているので、そのクラスにシリアライズできれば便利なわけです。

それもJson.NETなら簡単にできます。まさにJson.NETさまさまですね!

指定クラスへのデシリアライズ

これで元のクラスへデシリアライズできます!

 

4.JObjectのデシリアライズする利点

元クラスへのデシリアライズが可能であれば、JObject自体が必要にないように思えますが、そんなことはありません。

受け取るJsonの形式が分からない場合に、Collectionを内包するObjectとして各プロパティのアクセッサを提供してくれます。

この変換機能は受け取るデータがJsonのデータ形式を保持している限り、必ず提供されるので、

構文解析をして、自分でCollectionにデータを入れて、Objectを作って....などの面倒な作業を自分で実装するが必要がありません。

また、副次的な効果として、JObjectのToString()で文字列を生成すると、成型されたJsonを得ることができます。

以下のプログラムを試してみてください。

どうでしょう、JObjectを書き出した側でJsonが成型されて表示されていると思います。

 

今回、紹介したのはあくまで、Json.NETが提供している機能をそのまま使っているだけなので、次回はもう少し実際の要件を想定した内容にしていきます!

まだまだ便利な機能があるので、次回も引き続きテーマは「Json.NET」でいきます!興味のある方はぜひ、ご一読ください!

それでは...

  • この記事を書いた人

@EaE

ぬこ様とC#をこよなく愛する27歳です. 医療:理学療法士から、IT:システムエンジニアへ華麗?な変身をとげました. サーバーサイドエンジニアとして、日々奮闘しています. 今年の目標は、頑張ってWebサービスを作ります!!

-C#

Copyright© Developer Wall - 開発の壁 - , 2019 All Rights Reserved Powered by AFFINGER5.