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 数据的键中的数字的主要内容,如果未能解决你的问题,请参考以下文章

从 json 字符串中的键字符串替换或删除 Dote (.) 以插入 mongodb

KendoUI TreeView 动态 JSON

JSON 键中的分隔 ID 和名称

Pandas 在键中与 NaN 合并

删除 JSON 键中的前导和尾随空格

Swift 在尝试从存在的键中获取值时得到 Nil [关闭]