已经为此苦苦挣扎了几个小时。基本上我需要这个 json 变量成为一个数组,以便 Chart.js 可以识别它。
C# Controller 返回如下:
return Json(new { DataString = json }, JsonRequestBehavior.AllowGet);
后端从 json 结果返回以下字符串:
[{value:228,color:"#B3A11A"},{value:255,color:"#948299"},{value:1,color:"#5108C5"},{value:271,color:"#A86199"},{value:246,color:"#6A8869"}]
这完全没问题,但是当我将其分配给“数组”变量时,它不想“成为”数组,在此 JavaScript 中:
for (var i = 0; i < tables.length; i++) {
$.get('/Stats/GetFieldJson', { fieldname: tables[i], tablename: @ViewData["tablename"]' },
function(data) {
var array = JSON.parse(data.DataString);
var ctx = $("#Maritalstatus").get(0).getContext("2d");
var myNewChart = new Chart(ctx);
new Chart(ctx).Pie(array, { scaleShowValues: true });
}, 'json');
}
如何将 data.DataString 制作为与 Controller 输出的数组语法相匹配的可识别数组?
注意如果我只是说:
var array = [{value:228,color:"#B3A11A"},{value:255,color:"#948299"},{value:1,color:"#5108C5"},{value:271,color:"#A86199"},{value:246,color:"#6A8869"}]
它工作得很好。
最佳答案
我怀疑问题是 JSON.parse
期望格式良好的 JSON,并且在格式良好的 JSON 中,键需要双引号:
[{"value":228,"color":"#B3A11A"},{"value":255,"color":"#948299"},{"value":1,"color":"#5108C5"},{"value":271,"color":"#A86199"},{"value":246,"color":"#6A8869"}]
关于c# - JSON 数组而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22339256/