使用D3js,如何从我的数据库创建flare.json结构?

时间:2013-07-30 09:32:24

标签: c# d3.js visualization data-visualization

现实中有一个主观问题,但我只是想探索一些选项来为我的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格式进行更多的可视化,我可以创建一个库来完成繁重的工作 - 再次,只是对其他视角感兴趣来实现这一点。

1 个答案:

答案 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