可以在密钥周围创建没有引号的Javascript对象

时间:2015-05-08 06:37:27

标签: javascript

我正在尝试使用datamaps图表库并且遇到了数据表示法:

var map = new Datamap({
        element: document.getElementById('container'),
        fills: {
            HIGH: '#afafaf',
            LOW: '#123456',
            MEDIUM: 'blue',
            UNKNOWN: 'rgb(0,0,0)',
            defaultFill: 'green'
        },
        data: {
            IRL: {
                fillKey: 'LOW',
                numberOfThings: 2002
            },
            USA: {
                fillKey: 'MEDIUM',
                numberOfThings: 10381
            }
        }
    });

如果我想在“数据”属性中放置一个对象,我不能 - 因为国家/地区代码没有用引号括起来。

如何为此类方案构建数据?

[编辑]
这是我在控制器中创建的JSON,并使用REST标注将其发回:

{"USA":{"value":"15000.0","countryName":"USA"}}

我将其更改为以下内容以匹配库接受数据的方式:

{USA:{fillKey : 'LOW'}}

对于使用JSON.parse(),需要数据采用正确的JSON格式,例如:

{"USA":{"fillKey" : "LOW"}}

(注意美国周围没有引号)

目前,我正在使用类似的东西来创建数据图:

var dataForChart = buildDataForChart();// outputs a string "{USA:{fillKey : 'LOW'}}"   
var map = new Datamap({
        element: document.getElementById('container'),
        fills: {
            HIGH: '#afafaf',
            LOW: '#123456',
            MEDIUM: 'blue',
            UNKNOWN: 'rgb(0,0,0)',
            defaultFill: 'green'
        },
        data: dataForChart
    });

但它似乎不起作用。

1 个答案:

答案 0 :(得分:1)

尝试

var options = {
    element: ...,
    fills: ...,
    data: {
        IRL: {
            fillKey: 'LOW',
            numberOfThings: 2002
        },
        USA: {
            fillKey: 'MEDIUM',
            numberOfThings: 10381
        }
    }
}

options.data.CAN = { fillKey: 'HIGH', numberOfThings: 4201 };

var map = new Datamap(options);