我正在使用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'));
是否有解决此问题的方法?我是否可以以某种方式忽略该功能,因为无论如何我对阅读其内容都不感兴趣?预先感谢!
答案 0 :(得分:1)
如果文件是受信任的,则可以使用eval
:
var m = (0, eval)("(" + fs.readFileSync('jsonFile.json', 'utf-8') + ")");
无论如何,我不建议您这样做。
您应该删除函数并制作有效的json或将文件更改为js
,在其中添加module.exports =
,然后在其上使用常规的require
:
var m = require('jsonFile.js');