简短的问题:
给定基于表的数据(例如SQL结果),使用C#将其转换为特定的json字符串/ js objectstring的接受方法是什么?
情景:
我有一个使用d3.js进行常规图形报告的网页。对于数据,我调用一个API来执行存储过程并返回结果集。我需要一种方法将数据转换为合适的json对象,可以在我的d3报告中轻松处理。
示例:
我的存储过程返回以下表
将这些数据转换为与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...
]
虽然很有可能使用它,但我不知道这是否是最好的方式,或者我们是否可以创建一个更合适的对象。如果你能给出关于最佳实践和可能的例子的任何指示,那就太棒了。
答案 0 :(得分:0)
这更多是首选问题,也许是数据模型的一致性。您所拥有的可能是首选方法,因为在了解数组中的对象结构时很容易迭代。另一种方法是,如果你是一个传入的开发人员,更难理解的是,为表中的每一列创建一个数组,并通过数组的索引进行迭代以获取值。这将需要更多代码并且不太可读。因此,不是通过数组为每次迭代索引每个字段,只需要具有一致结构的对象,即使对象中的字段为空,这也导致了每列数组方法的另一个问题:您将拥有绝对确定一个字段不能为空。否则,您的索引计数将不一致。
长话短说,你所拥有的在语义上是最合适的。表列等同于对象中的字段,JSON对象等于表中的一行。我希望这对你有意义并帮助你。