当前位置: 首页 > 面试题库 >

每行键将DataTable转换为JSON

訾晋
2023-03-14
问题内容

我认为以下内容将是一项非常常见的任务,并认为将有一个简单的解决方案,但我找不到。

如果我有以下结构的数据表。

ID  Name    Active
ID1 John    TRUE
ID2 Bill    FALSE

我想将其序列化为JSON对象,其中ID列是JSON对象中的一个节点,例如:

[
    {
        "ID1": {
            "Name": "John",
            "Active": "True"
        },
        "ID2": {
            "Name": "Bill",
            "Active": "False"
        }
    }
]

我调查了JSON.NET,但无法正常工作。编辑:我正在使用C#


问题答案:

使用JSON.NET,这非常简单。只需将您的数据表转换成等效的字典词典:

public Dictionary<string, Dictionary<string, object>> DatatableToDictionary(DataTable dt, string id)
{
    var cols = dt.Columns.Cast<DataColumn>().Where(c => c.ColumnName != id);
    return dt.Rows.Cast<DataRow>()
             .ToDictionary(r => r[id].ToString(), 
                           r => cols.ToDictionary(c => c.ColumnName, c => r[c.ColumnName]));
}

然后致电:

JsonConvert.SerializeObject(DatatableToDictionary(dt, "ID"), Newtonsoft.Json.Formatting.Indented);

这是完整的测试:

var dt = new DataTable("MyTable");
dt.Columns.Add("ID");
dt.Columns.Add("Name");
dt.Columns.Add("Active");

dt.LoadDataRow(new[] {"ID1", "John", "True"}, true);
dt.LoadDataRow(new[] {"ID2", "Bill", "False"}, true);

JsonConvert.SerializeObject(DatatableToDictionary(dt, "ID"));

结果:

{
  "ID1": {
    "Name": "John",
    "Active": "True"
  },
  "ID2": {
    "Name": "Bill",
    "Active": "False"
  }
}


 类似资料:
  • 问题内容: 我将类型为DataTable的对象保存到SQL 2005数据库中的类型为varbinary的字段中。我想找回它,但无法键入强制转换。这就是我保存它的方式。 “ dt”是DataTable对象实例。 问题答案: 您在说的是二进制序列化和反序列化。也许这会有所帮助。

  • 问题内容: 我有一个SQL查询返回1行,其中包含多个列标题: 有没有一种方法可以将该行转换为2列,即: 这是在SQLServer 2008 r2上运行 编辑:添加一个更好的例子 来自一个简单的 类型查询。我要显示的是: 问题答案: 试试这个

  • 我有一个简单的JSON对象{“a”:{“key1”:“value1”,“key2”:“value2”,“key3”:“value3”},我想用一列“Key”将其转换成行。问题是我事先不知道钥匙的名字,或者有多少。换句话说,可能有“键4”、“键5”。也可能有“xyz1”:“xyz1”作为“a”对象中的键/值。我可以用JavaScript迭代这个JSON对象,但我这里的任务是,假设这个JSON对象作为

  • 有没有办法做到这一点? 我有一个角色,说“/”,我想得到这个的键盘组合。 对于德语布局,“/”将是Shift7。

  • 我是数据科学的初学者,我正在尝试使用Pandas来旋转此数据框架: 所以它变成这样:(标签应该变成列,文件路径变成行。) “标签”列是一组或一类文件路径。我想把它转换成这样一种方式,它适合这个函数:tf。Keras.preprocessing.image.flow_from_dataframe 提前感谢所有帮助我的人。

  • 本文向大家介绍C#将DataTable转换成list的方法,包括了C#将DataTable转换成list的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#将DataTable转换成list及数据分页的方法。分享给大家供大家参考。具体如下: 将一个DataTable转换成一个List 首先定义一个接收DataTable字段列的类 。类的字段与DataTable的列字段一致 希望本文所