关于一个json字符串的解析问题

json字符串

[
{
"name":"2015年",
"statTotal":[
{
"total":"123",
"statType":"事件等级"
},
{
"total":"456",
"statType":"行政区域"
}
]
},
{
"name":"2016年",
"statTotal":[
{
"total":"789",
"statType":"事件等级"
},
{
"total":"110",
"statType":"行政区域"
}
]
},
{
"name":"2017年",
"statTotal":[
{
"total":"128",
"statType":"事件等级"
},
{
"total":"654",
"statType":"行政区域"
}
]
}]

问题

我在后台获取到这么一个json字符串,在前台通过js做处理,需要将他在前台解析成一个类型

下面的map集合,这里的statType的值是动态变化的:

["事件等级" : "123,789,128","行政区域":"456,110,654"]

自己的写法

                        var legend = [];//图例
                        var result = eval('(' + data + ')');//json字符串
                        var levelTotal = [];//存放事件级别统计值
                        var gridTotal = [];//存放区域...
                        var timeTotal = [];//...
                        var typeTotal = [];//...
                        var resultTotal = [];//...

                        var map = new Map();

                        for(var j = 0; j < (result[0].statTotal).length; j++){
                            legend.push((result[0].statTotal)[j].statType);
                        }



                        for (var i = 0; i < result.length; i++) {
                            for(var j = 0; j < (result[i].statTotal).length; j++){

                                if(result[i].statTotal[j].statType == "事件等级"){
                                    levelTotal.push(result[i].statTotal[j].total);
                                }

                                if(result[i].statTotal[j].statType == "行政区域"){
                                    gridTotal.push(result[i].statTotal[j].total);
                                }

                                if(result[i].statTotal[j].statType == "事件类型"){
                                    typeTotal.push(result[i].statTotal[j].total);
                                }

                                if(result[i].statTotal[j].statType == "事件后果"){
                                    resultTotal.push(result[i].statTotal[j].total);
                                }

                                if(result[i].statTotal[j].statType == "时间"){
                                    timeTotal.push(result[i].statTotal[j].total);
                                }

                            }
                        }

                        //构建map键值对

                        for(var i = 0 ; i<legend.length ; i++){
                            if(legend[i] == "事件等级"){
                                map.set(legend[i],levelTotal);
                            }

                            if(legend[i] == "行政区域"){
                                map.set(legend[i],gridTotal);
                            }

                            if(legend[i] == "事件类型"){
                                map.set(legend[i],typeTotal);
                            }

                            if(legend[i] == "事件后果"){
                                map.set(legend[i],resultTotal);
                            }

                            if(legend[i] ==  "时间"){
                                map.set(legend[i],timeTotal);
                            }
                        }

我自己的写法不正确,因为statType的值是动态变化的,而我自己的是写死的,然后if判断,

还希望各位前辈们能指点一二,小弟在此谢过!

慕村225694
浏览 491回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript