KendoUI 图表不接受 JSON 数据的键中的数字
Posted
技术标签:
【中文标题】KendoUI 图表不接受 JSON 数据的键中的数字【英文标题】:KendoUI chart doesn't accept numbers in keys for JSON data 【发布时间】:2013-01-06 21:25:17 【问题描述】:如果我将这个简单的数据提供给 KendoUI 图表,图表数据会正确显示。
var data = [
"state":"NY","abc":12312,
"state":"AZ","abc":12312,
"state":"CA","abc":12312,
"state":"VT","abc":12312
];
请注意,上面的 JSON 包含 STRINGS 键。
但是,如果我提供一个数字作为键,我会在 kendo.all.js 中收到“第 2156 行的意外数字”错误。
var data = [
"state":"NY","1":12312,
"state":"AZ","1":12312,
"state":"CA","1":12312,
"state":"VT","1":12312
];
有什么帮助吗?
【问题讨论】:
【参考方案1】:这是 Kendo 的 DataViz 图表中的一个已知问题/设计:http://www.kendoui.com/forums/ui/general-discussions/kendo-datasource-field-name.aspx
它的要点是 JSON 文档中的键被用作图表代码中的变量名,这意味着键必须是有效的 javascript 变量名。
【讨论】:
可能会考虑更改变量名称生成,而不是直接使用id
前置一些前缀。
非常感谢。虽然这个边缘情况本可以由 Kendo 处理,但现在我将自己添加一些字符。【参考方案2】:
这个问题有解决办法,但不是真正的解决方法。您可以做的是,如果您按数组制作图表数据。以我为例:
var arrData = new Array();
for (i = 0; i < data.d.length - 1; i++)
var tnt = new customData();
tnt.displayField = data.d[i + 1][1].descriptionField.trim();
for (var j = 1; j < data.d[0].length; j++)
var prop = 'a' +j.toString()
var value = '';
switch (displayName)
case 'DI_RESP':
value = parseInt(data.d[i + 1][j].sampleField);
tnt[prop] = value
break;
default:
value = data.d[i + 1][j].sampleField;
tnt[prop] = value;
break;
arrData.push(tnt);
如您所见,customData 模型包含两个属性 descriptionField 和 sampleField。 descriptionField 是类别名称 sampleField 是一个浮点值。我附加了一个字母“a”只是为了使它成为一个字符串。错误会消失。
【讨论】:
以上是关于KendoUI 图表不接受 JSON 数据的键中的数字的主要内容,如果未能解决你的问题,请参考以下文章