c# - 额外的方括号被添加到 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 输出
解决方案
推荐阅读
- javascript - Angular 6 - 应用启动前的 svg 加载微调器
- json - 如何解析要馈送到表单控件的 JSON 值?
- javascript - 如何多行div方形图案
- wpf - MahApps.Metro 窗口在关闭时导致错误
- java - 线程“主”java.sql.SQLException 中的异常:未选择数据库
- java - 从父类获取泛型 Class 对象
- c# - PropertyChanged 保持为空
- tensorflow - 了解 RNN 中的输入参数
- go - 将 os.Stdin 转换为 [] 字节
- android - 从另一个片段导航回来时,片段内的 ViewPager 为空