首页 新闻 搜索 专区 学院

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

0
悬赏园豆:15 [已解决问题] 解决于 2017-02-15 09:27

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判断,

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

狂奔的小李子的主页 狂奔的小李子 | 初学一级 | 园豆:4
提问于:2016-11-16 11:56
< >
分享
最佳答案
1

http://blog.csdn.net/chelen_jak/article/details/28886311  如果用键值对的话,就按照这个自己封装一个用吧

收获园豆:15
路人第十一 | 菜鸟二级 |园豆:323 | 2016-11-16 12:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册