Javascript转换字符串变量
我明白了:Javascript转换字符串变量,javascript,Javascript,我明白了: var a = "slices: {0: {color: '#ffffff'}, 1: {color: '#fffff0'}, 2: {color: '#fff000'},3: {color: '#ff0000'}, 4: {color: '#f00000'}}"; 您可以看到它是一个字符串变量 我需要这个 draw(data, {slices: {0: {color: '#ffffff'}, 1: {color: '#fffff0'}, 2: {color: '#fff000'}
var a = "slices: {0: {color: '#ffffff'}, 1: {color: '#fffff0'}, 2: {color: '#fff000'},3: {color: '#ff0000'}, 4: {color: '#f00000'}}";
您可以看到它是一个字符串变量
我需要这个
draw(data, {slices: {0: {color: '#ffffff'}, 1: {color: '#fffff0'}, 2: {color: '#fff000'},3: {color: '#ff0000'}, 4: {color: '#f00000'}}, is3D: true});
正如您所看到的,我需要在不作为字符串的情况下给出变量,我尝试
eval( "slices: {0: {color: '#ffffff'}, 1: {color: '#fffff0'}, 2: {color: '#fff000'},3: {color: '#ff0000'}, 4: {color: '#f00000'}}");
但是没有用,我不能这样做
draw(data, {a, is3D: true});
谢谢您的时间。首先将字符串修复为有效的JSON,然后:
JSON.parse('{'+a+'}')代码>
编辑:安蒂·哈帕拉提出了一个很好的观点
JSON.parse(a)代码>
crispamares提供:
一个有效的JSON是这样的:“{”slices:{”0:{“color”:“A”},1:{“color”:“fffff0”},2:{“color”:“fff000”},3:{“color”:“ff0000”},4:{“color”:“ff0000”}
====
使用Crockford的JSON2(http://www.json.org/js.html)如果您需要支持,请执行以下操作:
var values = eval('({' + a + '})');
draw(data, values);
难道你不能
vara='draw(数据,{slices:{0:{color:a},1:{color:''fffff0'},2:{color:''fff000'},3:{color:''ff0000'},4:{color:'ff0000'},is3D:true})代码>
然后
eval(a)代码>
为什么不这样做呢?为什么不将设置为一个json对象,然后将is3D
属性添加到其中
var a = {slices: {0: {color: a}, 1: {color: '#fffff0'}, 2: {color: '#fff000'},3: {color: '#ff0000'}, 4: {color: '#f00000'}}};
if(itNeedsToBe3D) a.is3D = true;
else a.is3D = false;
draw(data, a);
您可以使用eval
,如许多答案所示。您也可以尝试使用JSON解析器,如
或者您可以使用setTimeout
function draw(a, b){
console.log(a, b);
}
var data = "sample data";
var a = "slices: {0: {color: a}, 1: {color: '#fffff0'}, 2: {color: '#fff000'},3: {color: '#ff0000'}, 4: {color: '#f00000'}}";
setTimeout("draw(data, {" + a + "});", 100);
有效的JSON如下所示:
'{"slices": {"0": {"color": "a"}, "1": {"color": "#fffff0"}, "2": {"color": "#fff000"},"3": {"color": "#ff0000"}, "4": {"color": "#f00000"}}}'
您可以使用来验证JSON,然后使用JSON.parser作为BLSully sugested,但是他的字符串中的代码不是JSON。然后他应该将其设置为有效的JSON。(假设他有能力)我同意他应该,如果他能的话。如果数据来自其他地方,将其转换为JSON的最简单方法是对其进行求值并进行字符串化;)我认为,如果他能够生成有效的JSON,那么他还可以根据需要在其周围放置{};)@天哪,你在说什么?该函数接受一个对象,而不是字符串。(埃德-忍者d)这根绳子是从哪里来的?这里的修复可能比消费者中的修复更容易。它来自我的数据库,我通过xajax将它提供给我的js函数。对我来说不起作用,请自己尝试:函数drawVisualization(){var data=eval(“google.visualization.arrayToDataTable”([['Task','Hours per Day'],['work',11],'Eat',2],'communion',2],'Watch TV',2],'Sleep',7]]));var tittleChart=“那么,你今天过得怎么样?”;新的google.visualization.PieChart(document.getElementById('visualization')。var a='draw(数据,{切片:{0:{color:a},1:{color:''fffffff0'},2:{color:'fff000'},3:{color:'ff0000'},4:{color:'ff0000'},is3D:true});eval(a)}