现实中有一个主观问题,但我只是想探索一些选项来为我的D3js可视化创建一个flare.json输出。
目前我有一个D3js的JSON结构,如下所示:
{
"name": "Engage Stats",
"children":
[
{
"name": "Unique Requests by Device",
"children":
[
{"name": "Android", "size": 80},
{"name": "IOS", "size": 366}
]
},
{
"name": "Overall Requests by Device",
"children":
[
{"name": "Android", "size": 2645},
{"name": "IOS", "size": 11703}
]
},
.... etc etc
我正在使用存储过程从MS-SQL检索我的数据。显然,一种方法是简单地读取我的数据集(我应该说我在后端使用C#/ .NET)并逐行构建JSON结构..但我只是想知道是否有其他人有更好/更清洁主意!
我想因为我使用flare.json格式进行更多的可视化,我可以创建一个库来完成繁重的工作 - 再次,只是对其他视角感兴趣来实现这一点。
答案 0 :(得分:1)
为了完整起见,并且结束这个问题,我最终采用了一种老式的方式......不是我猜的最好的,但它确实起作用了!
using (SqlDataReader dr = command.ExecuteReader())
{
// Check if we have data or not - no need to create the excel file if no data
if (!dr.HasRows)
{
JSONdata = null;
return false;
}
StringBuilder json = new StringBuilder();
string LastGroup = null;
bool Init = true;
json.AppendLine("{");
while (dr.Read())
{
if (Init)
{
json.AppendLine("\"name\": \"" + dr["Organisation"] + "\",");
json.AppendLine("\"children\": ");
json.AppendLine("[");
}
if (LastGroup != dr["GroupIdentifier"].ToString())
{
if (Init == true)
{
json.AppendLine("{");
json.AppendLine("\"name\": \"" + dr["GroupIdentifier"] + "\",");
json.AppendLine("\"children\":");
json.AppendLine("[");
Init = false;
}
else
{
var index = json.ToString().LastIndexOf(',');
if (index >= 0)
{
json.Remove(index, 1);
}
json.AppendLine("]");
json.AppendLine("},");
json.AppendLine("{");
json.AppendLine("\"name\": \"" + dr["GroupIdentifier"] + "\",");
json.AppendLine("\"children\":");
json.AppendLine("[");
}
LastGroup = dr["GroupIdentifier"].ToString();
}
json.AppendLine("{\"name\": \"" + dr["Measure"] + "\", \"size\": " + dr["MeasureValue"].ToString() + "},");
}
var index2 = json.ToString().LastIndexOf(',');
if (index2 >= 0)
{
json.Remove(index2, 1);
}
json.AppendLine("]");
json.AppendLine("}");
json.AppendLine("]");
json.AppendLine("}");
JSONdata = json.ToString();
return true;
} // end SqlRdr