2013-07-09 52 views
0

我想根据下面的代码行使用JQuery(从现有的JSON对象$ yAxis)创建一个JSON数组。使用JQuery构建JSON对象

abc.yAxis = [ 
    $.each($yAxis, function(i, obj){ 
     var $metric= obj.title.text; 
     var $oppositeAxis=obj.title.opposite; 
     { title: { 
      style: { 
       font: 'xyz', 
       color: 'black' 
      }, 
      text:'$metric'.substring(0,30), 
     }, 
     opposite: $oppositeAxis 
    },    
}); 
]; 

萤火总是说下面的错误:

[SyntaxError: invalid label 
[at] 
color: 'black'] 

我现有的JSON对象($ Y轴)是:

{ 
"yaxis": "[{'title':{'text':'A'},'opposite':false},{'title':{'text':'B'},'opposite':true}, {'title':{'text':'C'},'opposite':false}]" 
} 

可有人请帮助我。仅供参考 - 我将发送这个新的JSON作为highCharts的输入...如果有帮助。

在此先感谢!

+0

[有没有这样的事,作为一个“JSON对象”(HTTP:// benalman.com/news/2010/03/theres-no-such-thing-as-a-json/)。似乎你想创建一个对象。我建议阅读[关于对象的MDN文档](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects?red)(特别是关于[object initializers](https:// developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects?red#Using_object_initializers))。 –

回答

0

当你定义数组abc.yAxis = [...];,JavaScript是希望找到值,或将形成您的阵列的内容的名称 - 值对的列表..所以找到

$.each($yAxis, function(i, obj){ ... }); // semi colon is invalid here (Thanks @FelixKling) 

是真的不有效标签 - 这是什么原因导致你的错误..

你将不得不做这样的:

abc.yAxis = []; // define the array, you can also use "new Array()" 

$.each($yAxis, function(i, obj){ // for each $yAxis 
    var $metric= obj.title.text; 
    var $oppositeAxis=obj.title.opposite; 

    // Now we push the wanted object into the array 
    abc.yAxis.push({ title: { 
     style: { 
      font: 'xyz', 
      color: 'black' 
     }, 
     text:'$metric'.substring(0,30), 
    }, 
     opposite: $oppositeAxis 
    });    
}); 

请注意,这将创建对象的数组。我希望你努力实现..

你可以阅读的对象here,以及约的Array.push()here

+0

解释不正确。 '$ .each($ yAxis,function(i,obj){...});'is * valid * there(well,the trailing';'无效)。 '.each'只是一个被调用的函数,而*返回值*(我假设为undefined)成为数组中的元素。这就像'var foo = [bar()];'。错误来自'{title:{style:{'因为它被解释为一个块,而不是对象字面值。 –

+0

我其实并不知道。谢谢@FelixKling。然而,我的解决方案也能正常工作? –

+0

是的,解决方案很好! –