Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript转换字符串变量_Javascript - Fatal编程技术网

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)}​