0

要求是通过 JSON 提取数据并将其提供给图表。数据需要采用以下形式

var dataArray = [{data:[]},{data:[]}];

在客户端获取 JSON 数据的代码如下:

$.ajax({
                    type: "POST",
                    url: "Default.aspx/SendJsonUpadtes",
                    data: "{}",
                    contentType: "application/json",
                    dataType: "json",
                    success: function (msg) {
                        $("#Result").text(msg.d);
                        alert(msg.d);
                   }
                });

Asp.net 服务器端代码:

[WebMethod(EnableSession = false)]
    public static string SendJsonUpadtes()
    {
        return JSONFromCSV();

    }

    public static string JSONFromCSV()
    {
        //var reader = new StreamReader(File.OpenRead(@"D:\logs\data.csv"));
        var lines = File.ReadAllLines(@"D:\logs\electricity\data.csv");
        object[,] data = new object[lines.Count(), 2];
        int i = 0;
        string jsonStr = "[";
        lines.ToList().ForEach(line =>
        {
            jsonStr += "["+line+"]";
            i++;
            if (i < lines.Count())
                jsonStr += ",";
        });
        jsonStr += "]";
        return jsonStr;
    }

数据以字符串形式接收:

“[[10,20],[20,30],[30,40]]"

我需要解析它以使其成为 var dataArray = [{data:[]},{data:[]}];

我如何使用 Javascript 或 JQuery 来做到这一点!还有其他更好的想法吗?

4

2 回答 2

1

试试这个:

var dataArray = [];
$.each(msg.d, function(index, value) {
  dataArray.push({data : value});
});

在这里演示

于 2013-04-03T12:21:54.470 回答
0

您可以使用map函数来修改数据数组。

var data = [[10,20],[20,30],[30,40]];

var dataArray = data.map(function(element) {
                            return { "data" : element }
                         });
于 2013-04-03T12:23:04.520 回答