JSONライブラリ(Newtonsoft Json.NET)について説明していきます。
Newtonsoft Json.NET は、アグリモの製品では比較的よく使います。
用途としては、サーバー側で DBのDataTableをJSONに変換してSocket通信で送り、クライアント側で受信したJSONからDataTableに戻すといったことに利用しています。
Socket通信はマルチバイト文字(特に日本語の2バイト文字)の考慮が重要で、送信時に不具合があると文字化けを起こしてしまうので、最近は、文字化けが起きる場所ではWCFへの置き換えを図っています。WCFではクライアント側からサーバー側のDBに直接アクセスが可能にできるので、JSONで送受信する必要はなくなり、 AndroidやWebとの通信用に限られつつあります。
1.新規にソリューションを作成します。
2.パッケージマネージャーコンソールで、「Install-Package Newtonsoft.Json」と入力してEnterキーを押下します。
3.プロジェクトの参照にDLLが追加されます。
サンプルソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
//物件情報の読み込み DataSet wDs = new DataSet(); ReinsRenkeiSql wSql = new ReinsRenkeiSql(); string sqlStr = wSql.get_Bukken_Sql(pShiborikomiWhere, ""); using (SqlCeDataAdapter da = new SqlCeDataAdapter(sqlStr, conn)) { da.Fill(wDs); da.Dispose(); } wDs.DataSetName = "物件"; wDs.Tables[0].TableName = "データ"; if (wDs.Tables[0].Rows.Count > 0) { //ファイル選択ダイアログ表示 SaveFileDialog f = new SaveFileDialog(); f.FileName = "絞り込み物件データ.json"; f.Filter = "JSONファイル(*.json)|*.json|すべてのファイル(*.*)|*.*"; f.Title = "JSONファイル名を指定してください。"; f.CheckPathExists = true; f.RestoreDirectory = true; string save_fname = ""; if (f.ShowDialog() == DialogResult.OK) { save_fname = f.FileName; f.Dispose(); } else { f.Dispose(); //元に戻す Cursor.Current = Cursors.Default; return; } //待機状態 Cursor.Current = Cursors.WaitCursor; string json = JsonConvert.SerializeObject(wDs, Newtonsoft.Json.Formatting.Indented); //JSONファイルへ出力 StreamWriter SW = null; //ストリームをUTF-8エンコーディングで作成 SW = new StreamWriter(save_fname, false, System.Text.Encoding.GetEncoding("utf-8")); //DataSetのデータをJSONに書き込む SW.Write(json); SW.Close(); //元に戻す Cursor.Current = Cursors.Default; MessageBox.Show(this, "絞り込み物件データのJSONエクスポートが完了しました。", "確認", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show(this, "絞り込み物件データがありません。", "確認", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } |