首页 > 解决方案 > 额外的方括号被添加到 JSON 输出的数组中

问题描述

我发现在将我的数组转换为 时JSON,有额外的方括号会阻止数据被解析。

我打了一个AJAX电话,准备数据服务器端。处理数据并将其C#转换为数组供 Google Charts 处理。

它都是动态的,所以我不知道会有多少数组,因此我无法对数组进行硬编码,也无法循环客户端,因为性能令人震惊。

我不认为JSON解析器JavaScript是问题,它是在C#我写的。

我添加了两个JSON链接,一个是输出,另一个是预期输出。

我的 C# 是:

public List<object[]> CreateJsonMultiChartData(string serial, string guid, string datefrom, string dateto)
        {
            var serials = _context.RawData.Where(x => x.ProjectGuid == guid).Select(x => x.SerialNumber).Distinct().ToList();
            var projectUid = guid;
            var from = datefrom;
            var to = dateto;

            //Method to return data
            var g = new GetChartDataSprocs(_context, _configuration);

            List<object> chartData = new List<object>();
            var arrays = new List<object[]>();

            foreach (var s in serials)
            {
                var data = g.GetChartDataFromSqlServer(s, projectUid, from, to);               

                foreach (var item in data)
                {
                    var year = Convert.ToDateTime(item.ReadingDate).Year;
                    var month = Convert.ToDateTime(item.ReadingDate).Month;
                    var day = Convert.ToDateTime(item.ReadingDate).Day;
                    var hour = Convert.ToDateTime(item.ReadingDate).Hour;
                    var minute = Convert.ToDateTime(item.ReadingDate).Minute;
                    var second = Convert.ToDateTime(item.ReadingDate).Second;

                    var date = "new Date(" + year + "," + month + "," + day + "," + hour + "," + minute + "," + second + ")";

                    chartData.Add(
                        new ChartTestModel
                        {                            
                            ReadingDate = date,
                            ReadingValue = item.ReadingValue
                        });                    
                };

                arrays.Add(new[] { chartData });
            }

            return arrays;           
        }

我的 AJAX 响应是:

 public JsonResult GetMultiChartData(string serial, string uid, string from, string to)
        {
            var dateFrom = Convert.ToDateTime(from).ToString("yyyy-MM-dd HH:mm:ss");
            var dateTo = Convert.ToDateTime(to).AddMinutes(1).ToString("yyyy-MM-dd HH:mm:ss");

            var g = new GetChartData(_context, _configuration);
            var items = g.CreateJsonMultiChartData(serial, uid, dateFrom, dateTo);
            //var dsItems = JsonConvert.DeserializeObject(items);

           // return items;
            return Json(JsonConvert.SerializeObject(items, Formatting.Indented));
        }

我的 AJAX 调用是:

 $.ajax({
        url: 'ProjectCharts/GetMultiChartData',
        datatype: 'json',
        type: 'get',
        async: false,
        data: { section: section, uid: uid, from: from, to: to },
        contentType: 'application/json; charset=utf-8',
        success: function (d) {
            parsedData = $.parseJSON(d);               
            var data = new google.visualization.arrayToDataTable([
                { label: 'Date', id: 'ReadingDate', type: 'date' }, // Use object notation to explicitly specify the data type.
                { label: 'Data', id: 'ReadingValue', type: 'number' }, [parsedData]]);              
            var chart = new google.visualization.LineChart(document.getElementById('chart'));
            var options = multiLineChartOptions();
            chart.draw(data, options);
        },
        error: function () {
            alert("Error");
        }
    });

输出在:

当前 JSON 输出

预期的输出是: 预期的 JSON 输出

标签: c#arraysjson

解决方案


推荐阅读