使用JSON.parse()忽略JavaScript中的JSON函数

时间:2019-03-26 09:01:29

标签: javascript json

我正在使用Highcharts创建一些图表,更具体地说,我正在使用https://github.com/highcharts/node-export-server来导出图表。图表文件的来源使用JSON文件(请参阅下面的JSON)。

然后我从文件中读取数据,并想用从文件中读取的内容替换JSON文件中的 data 属性,我遇到的问题是JSON包含函数(),因此当我使用JSON.parse()时,它会失败,因为JSON无法包含function()。

{
    "chart":{
        "type":"bar",
        "labels":{
            "style":{
                "fontFamily":"Arial",
                "fontSize":"14px"}
        },
        "events": {
                    "load": function() {
                        var plotBands = this.xAxis[0].plotLinesAndBands;
                        for (var i in plotBands) {
                            var d = plotBands[i].svgElem.d;
                            var dArray = d.split(" ");
                            var rect = {x:25, y:dArray[5], width: 540, height: 100};
                            this.renderer.rect(rect.x, rect.y, rect.width, rect.height)
                                .attr({
                                    fill: 'green'
                                })
                                .add();
                        }
                    }
         }
    },
    "xAxis":{
        "categories":[
        {"name":"Group A","categories":["Text A.1","Text A.2","Text A.3"]},
        {"name":"Group B","categories":["Text B.1","Text B.2","Text B.3"]},
        {"name":"Group C","categories":["Text C.1","Text C.2","Text C.3"]},
        {"name":"Group D","categories":["Text D.1","Text D.2","Text D.3"]},
        {"name":"Group E","categories":["Text E.1","Text E.2","Text E.3"]},
        {"name":"Group F","categories":["Text F.1","Text F.2","Text F.3"]},
        {"name":"Group G","categories":["Text G.1","Text G.2","Text G.3"]}],
        "labels":{
            "rotation":0,
            "style":{
                "fontFamily":"Arial",
                "fontSize":"14px",
                "overflow":"justify",
                "textOverflow":"none"
            }
        }
    },
    "yAxis":{
        "min":0,
        "max":100,
        "title":{"text":"y-values"},
        "style":{
            "fontSize":"14px",
            "overflow":"justify"
        }
    },
    "series":[{
        "type":"bar",
        "name":"Score",
        "data":[20,20,43,80,20,10,65,88,35,62,48,85,63,20,13,54,34,100,23,55,76],
        "color":"red"
    }]
}

这是失败的代码行

var m = JSON.parse(fs.readFileSync('jsonFile.json', 'utf-8'));

是否有解决此问题的方法?我是否可以以某种方式忽略该功能,因为无论如何我对阅读其内容都不感兴趣?预先感谢!

1 个答案:

答案 0 :(得分:1)

如果文件是受信任的,则可以使用eval

var m = (0, eval)("(" + fs.readFileSync('jsonFile.json', 'utf-8') + ")");

无论如何,我建议您这样做。


您应该删除函数并制作有效的json或将文件更改为js,在其中添加module.exports =,然后在其上使用常规的require

var m = require('jsonFile.js');