2013-02-15 9 views
0
var data = [ 
    {label: "a Organinzation",data: 1}, 
    {label: "b pvt Ltd.",data: 2}, 
    {label: "d Organization",data: 10}, 
    {label: "Completed Organization",data: 15}, 
    {label: "Running Organization",data: 34} 
]; 

我在jsp页面中有一个jqplot的饼图,它以上述格式获取数据..现在我的问题是它的静态数据工作正常。但是当我想要包含一些动态数据时。它显示了因为这个数据变量着解析字符串的空白图表我提供...
上午生成相同的字符串,如上面的代码片断有以下如何在JavaScript中使用json值或在json对象中转换简单的字符串?

var total = rawdata.split(";"); 
var txt = null; 

for (var i = 1; i < total.length - 1; i++) { 
    if (i == 1) { 
     txt = "{ label: \"" + total[i] + "\", data: " + total[i + 1] + "}"; 
    } else { 
     txt = txt + ", { label: \"" + total[i] + "\", data: " + total[i + 1] + "}"; 
    } 
    i++; 
} 
alert(txt); 

elem = $('#fl_3'); 

var data = [JSON.parse(txt)]; 

指定时,我提醒TXT varibale它给我以下模式,这是我最初给出的代码段相同...

{ label: "Abc LTd.", data: 42}, 
{ label: "A org", data: 2}, 
{ label: "B Org", data: 6}, 
{ label: "c Org", data: 1}, 
{ label: "dbc comp ltd", data: 1}, 
{ label: "avc comp pvt. ltd", data: 1} 

然后为什么它不能解析它为json?在我的浏览器,我得到这个错误:如果我写data=[txt];

Error: SyntaxError: JSON.parse: expected property name or '}' 

,似乎什么都没有。
如果我写data = [JSON.parse(txt)];那么我得到的错误..

任何人都可以请帮助我吗?我怎样才能使这个运行?

+0

我想你只需要解析你的'数据'对象为JSON.parse(data); – Talha 2013-02-15 09:29:07

+0

我做到了..但不起作用 – 2013-02-15 09:32:13

+0

我在下面发布了一个答案,以防您还没有尝试过。但是,如果您向我们展示“rawdata”的样子,我认为这个问题可能会更清楚。到目前为止,我只能在'data'中看到你想要的输出,但是很高兴看到你开始的是什么。 – guypursey 2013-02-15 09:44:42

回答

0

感谢岁replies..but具有以下

var data = eval(txt); 
解决我的问题

我did not know ..只需要这只...感谢您的帮助..并请纠正我,如果在这个错误

3

包裹支架

var data = JSON.parse('[' + txt + ']'); 

txt字符串这会给你对象的数组。

还必须包装标签在双引号@guypursey提到,看到JSFiddle

var txt = '{ "label": "Abc LTd.", "data": 42},\ 
{ "label": "A org", "data": 2},\ 
{ "label": "B Org", "data": 6},\ 
{ "label": "c Org", "data": 1},\ 
{ "label": "dbc comp ltd", "data": 1},\ 
{ "label": "avc comp pvt. ltd", "data": 1}'; 

var data = JSON.parse('[' + txt + ']'); 
console.log(data); 
+0

nope ..我曾试图..不工作 – 2013-02-15 09:31:18

2

尝试包裹在双引号的属性名称,如JSON standard规定。例如:

txt= '{ "label": "' + total[i] + '", "data": ' + total[i+1] + '}'; 

我得轮不必使用反斜线使用单引号来包装你的串联串的片段逃脱的双引号在这里。只是不要忘记为了避免任何单引号。

而且不要忘记在数据数组的方括号周围加单引号,并将它们包含在解析中!

var data = JSON.parse('[' + txt +']'); 
3

为什么建立一个字符串,然后解析它回到对象,如果你已经有你的数据在数组中?也许你只是需要重新格式化total。不确定total阵列的结构。玩这个:

var data = []; 
for (var i = 0; i < total.length - 1; i = i + 2) { 
    data.push({label: total[i], data: total[i + 1]}); 
} 

注:我假设这里rawdata看起来像这样的字符串:

"a Organinzation;1;b pvt Ltd.;2;Completed Organization;3"; 
相关问题