Javascript转换字符串变量

时间:2012-09-27 17:05:47

标签: 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'},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});

感谢您的时间。

6 个答案:

答案 0 :(得分:3)

将您的字符串修改为首先是有效的JSON 然后:

<击> JSON.parse('{' + a + '}');

编辑:Antti Haapala提出了一个很好的观点

JSON.parse(a);

礼貌 crispamares

有效的JSON是这样的:"{"slices": {"0": {"color": "a"}, "1": {"color": "#fffff0"}, "2": {"color": "#fff000"},"3": {"color": "#ff0000"}, "4": {"color": "#f00000"}}}"

====

如果您需要支持&lt; IE8

,请使用Crockford的JSON2(http://www.json.org/js.html)

答案 1 :(得分:2)

这样做:

var values = eval('({' + a + '})');
draw(data, values);

答案 2 :(得分:1)

有效的JSON如下所示:

'{"slices": {"0": {"color": "a"}, "1": {"color": "#fffff0"}, "2": {"color": "#fff000"},"3": {"color": "#ff0000"}, "4": {"color": "#f00000"}}}' 

您可以使用http://jsonformatter.curiousconcept.com/验证您的JSON,然后使用JSON.parser作为BLSully sugested

答案 3 :(得分:0)

你不能......

var a = 'draw(data, {slices: {0: {color: a}, 1: {color: '#fffff0'}, 2: {color: '#fff000'},3: {color: '#ff0000'}, 4: {color: '#f00000'}}, is3D: true})';

然后 eval(a);

为什么这不起作用?

答案 4 :(得分:0)

为什么不让你的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);

答案 5 :(得分:0)

您可以使用许多答案中显示的eval。您还可以尝试使用https://raw.github.com/douglascrockford/JSON-js/master/json2.js

之类的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);