2015-06-22 65 views
1

你好,我有从MySQL以这种格式JSON响应结合JSON对象和JavaScript Object

{ 
    "allResult": [{ 
     "UkupanBroj": "1", 
     "mesec": "Jul" 
    }, { 
     "UkupanBroj": "3", 
     "mesec": "Jun" 
    }, { 
     "UkupanBroj": "1", 
     "mesec": "May" 
    }], 
    "resultByKurs": null 
} 

我想从这个响应对象创建传递到图表插件

var flotDashSales2Data = [{ 
    data: [ 
     ["Jan", 240], 
     ["Feb", 240], 
     ["Mar", 290], 
     ["Apr", 540], 
     ["May", 480], 
     ["Jun", 220], 
     ["Jul", 170], 
     ["Aug", 190] 
    ], 
    color: "#850d0d" 
}]; 

是否有可能从我的回应中创建新的对象?在这种方式会很酷,如果我没有在我的回应有一个月设置窗体示例[“Jan”,0]在我的数据至极我传递给插件?

+0

你能否确认要将“UkupanBroj”的值作为对本月的第二个值....例如{“UkupanBroj”:“123”,“mesec”:“Jul”}映射到[“Jul”,123]? – Adam

回答

5

你可以得到实际数据:

data_result = JSON.parse(result); 

它不会有相同的格式,但你就可以把它改造成你所需要的。

你可以做的东西沿着这些路线中的数据:

var aggregate = { 
    "Jan": 0, 
    "Feb": 0, 
    "Mar": 0, 
    "Apr": 0, 
    "May": 0, 
    "Jun": 0, 
    "Jul": 0, 
    "Aug": 0 // fill in all 12 months 
}; 

for (i = 0; i < data_result.allResult.length; i++) 
{ 
    item = data_result.allResult[i]; 
    aggregate[item.mesec] += parseInt(item.UkupanBroj, 10); 
} 

然后,填写与aggregate数据数组:

lotDashSales2Data = [{ 
    data: [ 
     ["Jan", aggregate.Jan], 
     ["Feb", aggregate.Feb], 
     ["Mar", aggregate.Mar], 
     ["Apr", aggregate.Apr], 
     // ... all 12 months 
    ], 
    color: "#850d0d" 
}]; 

编辑:因为你有不变的12个月(他们永远不会改变),你可以通过简单地列出它们来避免复杂的代码,如我的代码所示。如果你喜欢更复杂的代码,可以用其他方式来解决。这更多是一个选择和权衡(灵活性vs可读性)的问题。其他因素如绩效应该是无关紧要的。

+0

tnx mate不错的工作 –

0
var flotDashSales2Data = JSON.parse(response); 

使用JSON.parse