Highcharts用于字符串化JSON的选项

时间:2014-09-03 16:30:03

标签: javascript json highcharts stringify

我需要将 highcharts选项转换为 JSON字符串。我真的很挣扎。

因为它有循环结构。

示例:http://jsfiddle.net/8TEKD/

好吧,我也尝试用douglascrockford cycle.js去除它:https://github.com/douglascrockford/JSON-js

如果我尝试去除它,我会得到这个堆栈跟踪

'Attr.ownerElement' is deprecated and has been removed from DOM4 (http://w3.org/tr/dom). cycle.js:92
'Attr.textContent' is deprecated. Please use 'value' instead. cycle.js:92
'Attr.nodeValue' is deprecated. Please use 'value' instead. cycle.js:92
'HTMLHtmlElement.manifest' is deprecated. The manifest attribute only has an effect during the early stages of document load. cycle.js:92
InvalidStateError: Failed to read the 'selectionDirection' property from 'HTMLInputElement': The input element's type ('checkbox') does not support selection.

我需要这个,因为我想保存我的图表的配置,然后使用该配置加载它。

有没有办法做到这一点?

由于

1 个答案:

答案 0 :(得分:3)

问题是$('#container').highcharts(options);向您的对象添加了一个renderTo元素,这是一个DOM元素。在添加之前,您没有循环结构。而且,如果您真的想要保存配置选项以便再次使用,那么将它们呈现的DOM元素保存到此时并不适合您。

我建议在创建图表之前保存json:

$(function () {
    var options = {

        chart: {
            marginRight: 120
        },

        legend: {
            align: 'right',
            verticalAlign: 'top',
            x: 0,
            y: 100
        },

        xAxis: {
            categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
        },

        series: [{
            data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
        }]
    };
    jsonstring = JSON.stringify(options);

    $('#container').highcharts(JSON.parse(jsonstring));  // just to prove it works, obviously you would use the options variable here

});

http://jsfiddle.net/6y2gg6oy/

但是,如果这不是一个选项,您可以使用JSON.stringify replacer选项排除您不想要的选项对象部分。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_native_JSON#The_replacer_parameter