我在Asp MVC中有一个来自JsonResult的Json,看起来像这样:
{"Nombres":["Daniel Aguilar Delgado","Francisco Javier Aguilera Candelas"],"Materias":{"0":["Herramientas Legales contra la Delincuencia Organizada","Derechos humanos, debido proceso y función policial","Perfiles delictivos"],"1":["Criminalística y tecnologías","Cultura de la legalidad","Perspectiva de género","La función de seguridad pública en el marco de la reforma constitucional al sistema procesal penal","Prevención social de la violencia y la delincuencia","Actualización jurisprudencial en materia penal","Valores éticos y jurídicos"]},"NumMaterias":2,"NumPreguntas":10}
现在您可以看到对象“Materias”中的两个属性只是数字属性,但我不能做类似的事情:
var datapoints = [];
var data = [];
for (i = 0; i < response.Nombres.length; i++) {
for (j = 0; j < response.Materias.i.length; j++) {
datapoints.push({ y: 1, label: response.Nombres[i] });
}
}
for (i = 0; i < response.Materias.length; i++) {
for (j = 0; j < response.Materias.i.length; i++) {
data.push({
type: "stackedColumn",
legendText: response.Materias.i[j],
name: response.Materias.i[j],
showInLegend: true,
dataPoints: datapoints
})
}
}
(正如您可能已经注意到的那样,我正在尝试格式化json响应以将其与CanvasJs一起使用,但没有运气)。 如何使用类似的for循环访问数字属性,它甚至可能吗?我试图谷歌它,但大多数引用说你应该使用for循环,但是当我这样做CanvasJs抛出一个错误说替换不是一个函数,我。即我做完了:
for (var property in response.Materias) {
data.push({
type: "stackedColumn",
legendText: response.Materias[property],
name: response.Materias[property],
但这也不起作用。 我会感激任何帮助,因为我对此非常匆忙。
答案 0 :(得分:0)
您不能使用数字来使用点语法访问属性。请尝试使用括号语法:
for (j = 0; j < response.Materias[i].length; j++) {
datapoints.push({ y: 1, label: response.Nombres[i] });
}
然后在第二次循环中应用相同的处理。