我明白了:
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});
感谢您的时间。
答案 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
或者您可以使用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);