将表示对象的字符串转换为javascript对象

时间:2013-02-21 13:21:31

标签: javascript string object

我目前正在使用jqplot显示一些图表并使用php准备javascript代码。

在我的一张图表中,我使用Ajax来获取新图表。为此,我得到一个带有值列表和图表选项的json数组,如下所示:

这是我得到的JSON:

{"idGraphe":"bar_chart_5","conditions":"[]","data":"[[[1,80423],[2,62634],[3,70625],[4,72187],[5,72739],[6,70078],[7,72751],[8,74300],[9,75550],[10,72482],[11,70971],[12,77579]],[[1,73386],[2,70068],[3,85018],[4,69761],[5,75317],[6,68240],[7,72487],[8,74716],[9,74340],[10,75012],[11,74800],[12,83105]]]","options":"{series : [{label : 'consommationtotale Pilote1' , yaxis : 'yaxis' },{label : 'consommationtotale Pilote2' , yaxis : 'yaxis' }] , seriesDefaults : {renderer : $.jqplot.BarRenderer , rendererOptions : {barWidth : null} } , cursor : {show : true , zoom : true, showTooltip : false}, highlighter : {showTooltip : true , tooltipAxes : 'both' , tooltipContentEditor : getPointInfo , show : true} , title : 'Bar chart', legend : {show : true , renderer: $.jqplot.EnhancedLegendRenderer}, axes : {xaxis:{ tickRenderer:$.jqplot.CanvasAxisTickRenderer , renderer: $.jqplot.CategoryAxisRenderer,pad : 0 , label : 'mois' , labelRenderer: $.jqplot.CanvasAxisLabelRenderer}, yaxis:{ label : 'consommationtotale' , labelRenderer: $.jqplot.CanvasAxisLabelRenderer }}}"}

这是我遇到问题的部分:

"{series : [{label : 'consommationtotale Pilote1' , yaxis : 'yaxis' },{label : 'consommationtotale Pilote2' , yaxis : 'yaxis' }] , seriesDefaults : {renderer : $.jqplot.BarRenderer , rendererOptions : {barWidth : null} } , cursor : {show : true , zoom : true, showTooltip : false}, highlighter : {showTooltip : true , tooltipAxes : 'both' , tooltipContentEditor : getPointInfo , show : true} , title : 'Bar chart', legend : {show : true , renderer: $.jqplot.EnhancedLegendRenderer}, axes : {xaxis:{ tickRenderer:$.jqplot.CanvasAxisTickRenderer , renderer: $.jqplot.CategoryAxisRenderer,pad : 0 , label : 'mois' , labelRenderer: $.jqplot.CanvasAxisLabelRenderer}, yaxis:{ label : 'consommationtotale' , labelRenderer: $.jqplot.CanvasAxisLabelRenderer }}}"

我的问题是,为了使用适当的选项绘制图表,我需要将其作为javascript对象传递。那就是我无法想象如何将我的字符串转换为相应的javascript对象。

我试图将它作为一个对象进行投射,但没有成功,我没有那么多使用javascript的ex ^ periences。

有人会有解决方案或提示吗?

由于

1 个答案:

答案 0 :(得分:0)

一些现代浏览器支持将JSON解析为本机对象:

var x = "{series : [{label : 'consommationtotale Pilote1' , yaxis : 'yaxis' },{label : 'consommationtotale Pilote2' , yaxis : 'yaxis' }] , seriesDefaults : {renderer : $.jqplot.BarRenderer , rendererOptions : {barWidth : null} } , cursor : {show : true , zoom : true, showTooltip : false}, highlighter : {showTooltip : true , tooltipAxes : 'both' , tooltipContentEditor : getPointInfo , show : true} , title : 'Bar chart', legend : {show : true , renderer: $.jqplot.EnhancedLegendRenderer}, axes : {xaxis:{ tickRenderer:$.jqplot.CanvasAxisTickRenderer , renderer: $.jqplot.CategoryAxisRenderer,pad : 0 , label : 'mois' , labelRenderer: $.jqplot.CanvasAxisLabelRenderer}, yaxis:{ label : 'consommationtotale' , labelRenderer: $.jqplot.CanvasAxisLabelRenderer }}}";
var result = JSON.parse(x);

对于不支持它的浏览器,您可以从json.org下载json2.js以安全地解析JSON对象。