将数据表转换为合适的javascript对象(C#)

时间:2018-06-12 18:57:54

标签: javascript c# json serialization datatable

简短的问题:

给定基于表的数据(例如SQL结果),使用C#将其转换为特定的json字符串/ js objectstring的接受方法是什么?

情景:

我有一个使用d3.js进行常规图形报告的网页。对于数据,我调用一个API来执行存储过程并返回结果集。我需要一种方法将数据转换为合适的json对象,可以在我的d3报告中轻松处理。

示例:

我的存储过程返回以下表

enter image description here

将这些数据转换为与javascript / d3一起使用的最合适的对象是什么,以及如何实现这一目标?

我尝试了什么:

由于我的API是用C#编写的,因此我尝试使用JsonConvert.SerializeObject方法,如下所示。

DataTable dt = new DataTable();
using (SqlDataAdapter sql = new SqlDataAdapter(getData))
{
    sql.Fill(dt);
}

returnStr = JsonConvert.SerializeObject(dt);

生成一个简单的数组,每行数据一个项目,例如:

[
    {
        "Group": "Group01", "TrueFalse": 1, "SubGroup": "SubGroup01", "Owner": "ME"
    },
    {
        "Group": "Group01", "TrueFalse": 1, "SubGroup": "SubGroup02", "Owner": "ME"
    },
    {
        "Group": "Group01", "TrueFalse": 0, "SubGroup": "SubGroup02", "Owner": "You"
    },
    {
        "Group": "Group01", "TrueFalse": 1, "SubGroup": "SubGroup03, "Owner": "You"
    },
    {
        "Group": "Group02", "TrueFalse": 0, "SubGroup": "SubGroup01", "Owner": "Someone"
    },
    // etc...
]

虽然很有可能使用它,但我不知道这是否是最好的方式,或者我们是否可以创建一个更合适的对象。如果你能给出关于最佳实践和可能的例子的任何指示,那就太棒了。

1 个答案:

答案 0 :(得分:0)

这更多是首选问题,也许是数据模型的一致性。您所拥有的可能是首选方法,因为在了解数组中的对象结构时很容易迭代。另一种方法是,如果你是一个传入的开发人员,更难理解的是,为表中的每一列创建一个数组,并通过数组的索引进行迭代以获取值。这将需要更多代码并且不太可读。因此,不是通过数组为每次迭代索引每个字段,只需要具有一致结构的对象,即使对象中的字段为空,这也导致了每列数组方法的另一个问题:您将拥有绝对确定一个字段不能为空。否则,您的索引计数将不一致。

长话短说,你所拥有的在语义上是最合适的。表列等同于对象中的字段,JSON对象等于表中的一行。我希望这对你有意义并帮助你。