C#でJsonConvert.DeserializeObjectを使用して動的なDataTableに変換する方法


  1. 必要なライブラリのインポート:

    using Newtonsoft.Json;
    using System.Data;
  2. JSONデータをオブジェクトに変換する:

    string jsonData = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";
    dynamic obj = JsonConvert.DeserializeObject(jsonData);
  3. 動的なDataTableを作成する:

    DataTable dataTable = new DataTable();
  4. オブジェクトのプロパティをカラムとしてDataTableに追加する:

    foreach (var property in obj.GetType().GetProperties())
    {
       dataTable.Columns.Add(property.Name, property.PropertyType);
    }
  5. オブジェクトの値を行としてDataTableに追加する:

    DataRow row = dataTable.NewRow();
    foreach (var property in obj.GetType().GetProperties())
    {
       row[property.Name] = property.GetValue(obj);
    }
    dataTable.Rows.Add(row);

これで、JSONデータを動的なDataTableに変換することができます。必要に応じて、JSONデータが配列である場合の処理や、複数のオブジェクトをDataTableに追加する方法など、さまざまな方法を実装することもできます。