WebSurfer's Home

トップ > Blog 1   |   Login
Filter by APML

JSON 文字列から C# のクラス定義生成

by WebSurfer 10. May 2020 14:24

Newtonsoft.Json などを利用して JSON 文字列を C# のオブジェクトにデシリアライズする際、C# のオブジェクトのクラス定義が必要ですが、Visual Studio を利用してクラス定義を得ることが可能です。

JSON 文字列から C# のクラス定義生成

JSON 文字列をコピー(クリップボードに取得)し、Visual Studio のエディタ上でコードを張り付けたい場所にカーソルを置き、上の画像のように[編集(E)]⇒[形式を選択して貼り付け(S)]⇒[JSON をクラスとして張り付ける(J)]でカーソルの場所に C# のクラス定義が生成されます。

(VS2019 と VS2015 で確認。ちなみに、英語版 Visual Studio では [Edit] ⇒ [Paste Special] ⇒ [Paste JSON As Classes] となります)

具体的には、例えばある Web API の仕様として以下の JSON 文字列のサンプルが公開されていたとします。

{    
  "request":
  {
    "transaction":
    {
      "id" : "10",
      "server" : "10"
    },
    "list" :
    [
      { "group" : "1", "data" : "XXXXX" },
      { "group" : "1", "data" : "XXXXX" }
    ]
  }
}

C# のアプリケーションでこの Web API にアクセスして JSON 文字列を取得して利用する場合は、その JSON 文字列を C# のオブジェクトにデシリアライズすることになります。

デシリアライズに、例えば Newtonsoft.Json の DeserializeObject<T>(String) メソッドを使う場合 T のクラス定義が必要になります。

その場合、上の JSON 文字列をコピー(クリップボードに取得)して、この記事の一番上の画像のように Visual Studio を操作すれば以下の画像の通りカーソルを置いた場所にクラス定義が生成されます。

生成されたクラス定義

DeserializeObject<T>(String) メソッドの T は上の画像でいうと Rootobject になりますので、それを使って Rootobject 型の C# のオブジェクトにデシリアライズできます。

知ってました? 実は自分は最近まで知らなかったです。(汗)

Tags: , ,

DevelopmentTools

VS2019 で RDLC デザイナの表示

by WebSurfer 24. April 2020 12:29

ReportViewer を使うアプリを作成する際 .rdlc ファイルを生成しますが、そのデザイナを Visual Studio Community 2019 で表示するにはどうしたらよいかを書きます。

RDLC デザイナ

Visual Studio 2015 では SQL Server Data Tool をインストールするだけで RDLC デザイナもインストールされました。ちなみに、インストールするには、コントロールパネルの「プログラムと機能」で Visual Studio 2015 を探し、それを右クリックすると [変更(C)] と出てくるのでそれをクリック、表示されるダイアログの [Modify] をクリック、表示されるダイアログで Microsoft SQL Server Data Tools にチェックを入れて UPDATE すれば OK です。

VS2015 SSDT

Visual Studio 2019 の場合、SQL Server Data Tools は下の画像のようにワークロードの「データの保存と処理」をインストールする際にオプションの「SQL Server Data Tools」にチェックを入れればインストールされます。

SSDT

しかし、それだけでは RDLC デザイナはインストールされないようです。.rdlc ファイルを開くと生の xml コードしか表示されません。

visual studio 2019 rdlc designer でググってしらべると Microsoft RDLC Report Designer という以下の記事がヒットしました。どうもこれをインストールする必要があるようです。

上のページからダウンロードしてインストールする必要はなく、Visual Studio 2019 を起動してメニューバーの[拡張機能(X)]から追加できます。以下の画像を見てください。

Microsoft RDLC レポートデザイナー

インストール後 .rdlc ファイルを開けば、この記事の一番上の画像のような RDLC デザイナ画面が表示されるはずです。自分の環境では ReportViewer v12, v15 いずれのバージョンも OK でした。

なお、Visual Studio 2017 は自分は持っていませんので、どうなっているのかは不明です。

Tags: , , ,

DevelopmentTools

VS2019 で Web サイトプロジェクト作成

by WebSurfer 23. April 2020 11:44

Visual Studio 2015 以前(VS2017 は不明)では以下の画像のように [File] ⇒ [New] ⇒ [Wen Site...] (日本語版では[ファイル(F)]⇒[新規作成(N)]⇒[Web サイト(W)...]) で ASP.NET Web Forms の Web サイトプロジェクト作成用のテンプレートが表示されました。Visual Studio 2019 ではそのメニューがどこにあるかという話を書きます。

Visual Studion 2015

今は Web アプリケーションプロジェクトを使うのが主流ですが、ASP.NET がリリースされた頃の Web Forms アプリでは Web サイトプロジェクトを使っていました。検証などでページ単位にちょっと試してみたいというような場合は Web サイトプロジェクトが便利なので自分は今でも使っています。

両者の特徴は Microsoft のドキュメント「Web アプリケーションプロジェクトと Web サイトプロジェクト」に詳しく書かれていますので見てください。

Web サイトプロジェクトを使���メリットは、上に紹介した記事に書いてありますように、

"Web アプリケーションのごく一部を変更する場合、アプリケーション全体を再配置する必要はありません。 変更したファイルを運用 IIS サーバーにコピーするだけです。 運用サーバー上でファイルを直接編集することもできます (Web アプリケーション プロジェクトのコード ファイルは単一のアセンブリ ファイルにコンパイルされるため、.aspx ファイルまたは .ascx ファイルのみが変更された場合を除き、少しの変更でもサイト全体を配置する必要があります)。"

・・・ということです。

Web アプリケーションプロジェクトの場合は、特定のページのコードをちょっと変更しただけで全部コンパイルし直さなければならないのですが、コンパイルし直すのに時間がかかるし、一部の変更が他の部分に思わぬ影響を与えることもあるし、あるページは C# で別のページを VB.NET で作るということはできないなど、開発時の検証目的で使う場合はデメリットが大きいと思います。

で、VS2019 ではどのようにすれば Web サイトプロジェクトを作成できるかですが、まず、下の画像のように、ワークロードに「ASP.NET と Web 開発」を選択し「インストールの詳細」で[追加のプロジェクトテンプレート (以前のバージョン)]にチェックを入れてインストールします。

追加のプロジェクトテンプレート

そして、VS2019 の[ファイル(F)]⇒[新規作成(N)]⇒[プロジェクト(P)...]で「新しいプロジェクトの作成」ダイアログを開けば、その中の[ASP.NET Web Forms サイト]という Web サイトプロジェクト用のテンプレートが選択できるはずです。

新しいプロジェクトの作成

上の画面で[ASP.NET Web Forms サイト]を選択して[次へ(N)」をクリックして先に進み、次の画面でプロジェクトの名前、プロジェクトを生成する場所(フォルダ)、フレームワークを設定してから[作成(C)]をクリックすればプロジェクトが自動生成されます。

Default.aspx

上の画像は、生成されたプロジェクトを VS2019 から[デバッグ(D)]⇒[デバッグの開始(S)](または[デバッグなしで開始(H)]) で実行し、Default.aspx を表示したものです。

(注:アドレスバーに表示されているのが Default.aspx ではなくて Default となっている理由は、テンプレートに実装されている Friendly url の機能によるものです。もちろん無効に設定できます)

Tags: ,

DevelopmentTools

About this blog

2010年5月にこのブログを立ち上げました。その後 ブログ2 を追加し、ここは ASP.NET 関係のトピックス、ブログ2はそれ以外のトピックスに分けました。

Calendar

<<  March 2021  >>
MoTuWeThFrSaSu
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

View posts in large calendar