使用有光泽和rCharts创建仪表板应用程序,我需要将原始javascript(不是字符串)传递给Highcharts对象。
鉴于此列表
series <- list(data = list(c(0, 0), c(100, 0), c(100, 100)),
type = 'polygon',
color = 'Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0.5).get()')
我需要生成这个JSON
{series:[{
data: [[0, 0], [100, 0], [100, 100]],
type: 'polygon',
color: Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0.5).get()
}]
}
但我找不到任何方法来阻止RJSONIO或jsonlte引用color属性的值
闪亮的提供者JS()用于包装文字javascript,但RJSONIO忽略它,jsonlite抱怨缺少类JS_EVAL的asJSON方法。
是否有其他方法可以选择性地阻止引用toJSON输出?
答案 0 :(得分:1)
您需要rCharts作者的支持。两种方法:
htmlwidgets::JS()
中。 JS代码将自动保存和评估。JS()
在字符串中添加了一个类JS_EVAL
,我们计算出这些字符串的位置(例如series[2].color
); eval()
这些字符串; 答案 1 :(得分:0)
你不能用json库做这个的原因是你的代码显然不是JSON而是JavaScript。黑客就是将文字字符串视为json:
color <- 'Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0.5).get()'
class(color) <- 'json'
series <- list(data = list(c(0, 0), c(100, 0), c(100, 100)),
type = 'polygon',
color = color)
jsonlite::toJSON(series, json_verbatim = TRUE, auto_unbox = TRUE)