使用js对json进行操作,{"AreaName":"江苏省","AreaCode":"320000"},{"AreaName":"南京市","AreaCode":"320100"},{"AreaName":"市辖区","AreaCode":"320101"},{"AreaName":"玄武区","AreaCode":"320102"},{"AreaName":"白下区","AreaCode":"320103"},{"AreaName":"秦淮区","AreaCode":"320104"},{"AreaName":"建邺区","AreaCode":"320105"},{"AreaName":"鼓楼区","AreaCode":"320106"},{"AreaName":"下关区","AreaCode":"320107"},{"AreaName":"浦口区","AreaCode":"320111"},{"AreaName":"栖霞区","AreaCode":"320113"},{"AreaName":"雨花台区","AreaCode":"320114"},{"AreaName":"江宁区","AreaCode":"320115"},{"AreaName":"六合区","AreaCode":"320116"},{"AreaName":"溧水县","AreaCode":"320124"},{"AreaName":"高淳县","AreaCode":"320125"}这种样式的数据转换成{"AreaName":"江苏省","AreaCode":"320000","cityList":[{"AreaName":"南京市","AreaCode":"320100","areaList":[{"AreaName":"市辖区","AreaCode":"320101"},{"AreaName":"玄武区","AreaCode":"320102"},{"AreaName":"白下区","AreaCode":"320103"},{"AreaName":"秦淮区","AreaCode":"320104"},{"AreaName":"建邺区","AreaCode":"320105"},{"AreaName":"鼓楼区","AreaCode":"320106"},{"AreaName":"下关区","AreaCode":"320107"},{"AreaName":"浦口区","AreaCode":"320111"},{"AreaName":"栖霞区","AreaCode":"320113"},{"AreaName":"雨花台区","AreaCode":"320114"},{"AreaName":"江宁区","AreaCode":"320115"},{"AreaName":"六合区","AreaCode":"320116"},{"AreaName":"溧水县","AreaCode":"320124"},{"AreaName":"高淳县","AreaCode":"320125"}]}]}
这种形式的,用js怎么实现??大神求帮助JSONJavaScript

解决方案 »

  1.   


    可以比较AreaCode中的后四位,按照这个来塞数据!
      

  2.   

      <script>            var s = eval([{"AreaName":"江苏省","AreaCode":"320000"},{"AreaName":"南京市","AreaCode":"320100"},{"AreaName":"市辖区","AreaCode":"320101"},{"AreaName":"玄武区","AreaCode":"320102"},{"AreaName":"白下区","AreaCode":"320103"},{"AreaName":"秦淮区","AreaCode":"320104"},{"AreaName":"建邺区","AreaCode":"320105"},{"AreaName":"鼓楼区","AreaCode":"320106"},{"AreaName":"下关区","AreaCode":"320107"},{"AreaName":"浦口区","AreaCode":"320111"},{"AreaName":"栖霞区","AreaCode":"320113"},{"AreaName":"雨花台区","AreaCode":"320114"},{"AreaName":"江宁区","AreaCode":"320115"},{"AreaName":"六合区","AreaCode":"320116"},{"AreaName":"溧水县","AreaCode":"320124"},{"AreaName":"高淳县","AreaCode":"320125"}]);        alert(SetJson(320000, 320100));
            function SetJson(areaCode, areaCode1) {
            var n = "";
            for (var i = 0; i < s.length; i++) {
                if (s[i].AreaCode == areaCode) {
                    n += '{"AreaName":' + s[0].AreaName + ',"AreaCode": ' + s[0].AreaCode + ',"cityList":[';
                }
                else if (s[i].AreaCode == areaCode1) {
                n += '{"AreaName":' + s[0].AreaName + ',"AreaCode": ' + s[0].AreaCode + ',"areaList":[';
            } else {
                n += '{"AreaName":' + s[0].AreaName + ',"AreaCode": ' + s[0].AreaCode + '}';
                }
        }
                n += "]}]}";
                return n;
            }
            
        </script>
      

  3.   


    怎么写出第二个json呢??
      

  4.   

    写的有点恶心,如果有问题我再优化一下。var citys = [
        {"AreaName":"江苏省","AreaCode":"320000"},
        {"AreaName":"南京市","AreaCode":"320100"},
        {"AreaName":"市辖区","AreaCode":"320101"},
        {"AreaName":"玄武区","AreaCode":"320102"},
        {"AreaName":"白下区","AreaCode":"320103"},
        {"AreaName":"秦淮区","AreaCode":"320104"},
        {"AreaName":"建邺区","AreaCode":"320105"},
        {"AreaName":"鼓楼区","AreaCode":"320106"},
        {"AreaName":"下关区","AreaCode":"320107"},
        {"AreaName":"浦口区","AreaCode":"320111"},
        {"AreaName":"栖霞区","AreaCode":"320113"},
        {"AreaName":"雨花台区","AreaCode":"320114"},
        {"AreaName":"江宁区","AreaCode":"320115"},
        {"AreaName":"六合区","AreaCode":"320116"},
        {"AreaName":"溧水县","AreaCode":"320124"},
        {"AreaName":"高淳县","AreaCode":"320125"}
    ];
    function fn(data , first , second , level){
        var result = [] , temp , startIndex=0;
        if(!level){
            second = '0000';
            level = 1;
            startIndex = 2;
        }else{
            startIndex = level*2;
        }
        for(var i in data){     
            if(data[i].AreaCode.indexOf(second)==startIndex){
                temp = data[i];            
                temp['cityList'] = fn(data , data[i].AreaCode.substring(0,level*2) , second.substring(startIndex) , level+1);
                result.push(temp);
            }else if(!second&&data[i].AreaCode.indexOf('00')==-1&&!data[i].AreaCode.indexOf(first)){            
                result.push(data[i]);
            }
        }
        return result;
    }
    console.log(fn(citys));
      

  5.   


    代码还有点问题,修改了下。var citys = [
        {"AreaName":"江苏省","AreaCode":"320000"},
        {"AreaName":"南京市","AreaCode":"320100"},
        {"AreaName":"市辖区","AreaCode":"320101"},
        {"AreaName":"玄武区","AreaCode":"320102"},
        {"AreaName":"白下区","AreaCode":"320103"},
        {"AreaName":"秦淮区","AreaCode":"320104"},
        {"AreaName":"建邺区","AreaCode":"320105"},
        {"AreaName":"鼓楼区","AreaCode":"320106"},
        {"AreaName":"下关区","AreaCode":"320107"},
        {"AreaName":"浦口区","AreaCode":"320111"},
        {"AreaName":"栖霞区","AreaCode":"320113"},
        {"AreaName":"雨花台区","AreaCode":"320114"},
        {"AreaName":"江宁区","AreaCode":"320115"},
        {"AreaName":"六合区","AreaCode":"320116"},
        {"AreaName":"溧水县","AreaCode":"320124"},
        {"AreaName":"高淳县","AreaCode":"320125"},    {"AreaName":"江苏省123","AreaCode":"310000"},
        {"AreaName":"南京市123","AreaCode":"310100"},
        {"AreaName":"市辖区123","AreaCode":"310101"},
        {"AreaName":"玄武区123","AreaCode":"310102"},
        {"AreaName":"白下区123","AreaCode":"310103"},
        {"AreaName":"秦淮区123","AreaCode":"310104"},
        {"AreaName":"建邺区123","AreaCode":"310105"},
        {"AreaName":"鼓楼区123","AreaCode":"310106"},
        {"AreaName":"下关区123","AreaCode":"310107"},
        {"AreaName":"浦口区123","AreaCode":"310111"},
        {"AreaName":"栖霞区123","AreaCode":"310113"},
        {"AreaName":"雨花台区123","AreaCode":"310114"},
        {"AreaName":"江宁区123","AreaCode":"310115"},
        {"AreaName":"六合区123","AreaCode":"310116"},
        {"AreaName":"溧水县123","AreaCode":"310124"},
        {"AreaName":"高淳县123","AreaCode":"310125"},    {"AreaName":"江苏省456","AreaCode":"330000"},
        {"AreaName":"南京市456","AreaCode":"330100"},
        {"AreaName":"市辖区456","AreaCode":"330101"},
        {"AreaName":"玄武区456","AreaCode":"330102"},
        {"AreaName":"白下区456","AreaCode":"330103"},
        {"AreaName":"秦淮区456","AreaCode":"330104"},
        {"AreaName":"建邺区456","AreaCode":"330105"},
        {"AreaName":"鼓楼区456","AreaCode":"330106"},
        {"AreaName":"下关区456","AreaCode":"330107"},
        {"AreaName":"浦口区456","AreaCode":"330111"},
        {"AreaName":"栖霞区456","AreaCode":"330113"},
        {"AreaName":"雨花台区456","AreaCode":"330114"},
        {"AreaName":"江宁区456","AreaCode":"330115"},
        {"AreaName":"六合区456","AreaCode":"330116"},
        {"AreaName":"溧水县456","AreaCode":"330124"},
        {"AreaName":"高淳县456","AreaCode":"330125"}
    ];
    function fn(data , first , second , level){
        var result = [] , startIndex=0;
        if(!level){
            second = '0000'; level = 1; startIndex = 2;
        }else{
            startIndex = level*2;
        }
        for(var i in data){     
            if(data[i].AreaCode.indexOf(second)==startIndex&&(!data[i].AreaCode.indexOf(first)&&level>1||level==1)){        
                data[i]['cityList'] = fn(data , data[i].AreaCode.substring(0,level*2) , second.substring(startIndex) , level+1);
                result.push(data[i]);
            }else if(!second&&data[i].AreaCode.indexOf('00')==-1&&!data[i].AreaCode.indexOf(first)){            
                result.push(data[i]);
            }
        }
        return result;
    }
    console.log(fn(citys));
      

  6.   


    代码还有点问题,修改了下。var citys = [
        {"AreaName":"江苏省","AreaCode":"320000"},
        {"AreaName":"南京市","AreaCode":"320100"},
        {"AreaName":"市辖区","AreaCode":"320101"},
        {"AreaName":"玄武区","AreaCode":"320102"},
        {"AreaName":"白下区","AreaCode":"320103"},
        {"AreaName":"秦淮区","AreaCode":"320104"},
        {"AreaName":"建邺区","AreaCode":"320105"},
        {"AreaName":"鼓楼区","AreaCode":"320106"},
        {"AreaName":"下关区","AreaCode":"320107"},
        {"AreaName":"浦口区","AreaCode":"320111"},
        {"AreaName":"栖霞区","AreaCode":"320113"},
        {"AreaName":"雨花台区","AreaCode":"320114"},
        {"AreaName":"江宁区","AreaCode":"320115"},
        {"AreaName":"六合区","AreaCode":"320116"},
        {"AreaName":"溧水县","AreaCode":"320124"},
        {"AreaName":"高淳县","AreaCode":"320125"},    {"AreaName":"江苏省123","AreaCode":"310000"},
        {"AreaName":"南京市123","AreaCode":"310100"},
        {"AreaName":"市辖区123","AreaCode":"310101"},
        {"AreaName":"玄武区123","AreaCode":"310102"},
        {"AreaName":"白下区123","AreaCode":"310103"},
        {"AreaName":"秦淮区123","AreaCode":"310104"},
        {"AreaName":"建邺区123","AreaCode":"310105"},
        {"AreaName":"鼓楼区123","AreaCode":"310106"},
        {"AreaName":"下关区123","AreaCode":"310107"},
        {"AreaName":"浦口区123","AreaCode":"310111"},
        {"AreaName":"栖霞区123","AreaCode":"310113"},
        {"AreaName":"雨花台区123","AreaCode":"310114"},
        {"AreaName":"江宁区123","AreaCode":"310115"},
        {"AreaName":"六合区123","AreaCode":"310116"},
        {"AreaName":"溧水县123","AreaCode":"310124"},
        {"AreaName":"高淳县123","AreaCode":"310125"},    {"AreaName":"江苏省456","AreaCode":"330000"},
        {"AreaName":"南京市456","AreaCode":"330100"},
        {"AreaName":"市辖区456","AreaCode":"330101"},
        {"AreaName":"玄武区456","AreaCode":"330102"},
        {"AreaName":"白下区456","AreaCode":"330103"},
        {"AreaName":"秦淮区456","AreaCode":"330104"},
        {"AreaName":"建邺区456","AreaCode":"330105"},
        {"AreaName":"鼓楼区456","AreaCode":"330106"},
        {"AreaName":"下关区456","AreaCode":"330107"},
        {"AreaName":"浦口区456","AreaCode":"330111"},
        {"AreaName":"栖霞区456","AreaCode":"330113"},
        {"AreaName":"雨花台区456","AreaCode":"330114"},
        {"AreaName":"江宁区456","AreaCode":"330115"},
        {"AreaName":"六合区456","AreaCode":"330116"},
        {"AreaName":"溧水县456","AreaCode":"330124"},
        {"AreaName":"高淳县456","AreaCode":"330125"}
    ];
    function fn(data , first , second , level){
        var result = [] , startIndex=0;
        if(!level){
            second = '0000'; level = 1; startIndex = 2;
        }else{
            startIndex = level*2;
        }
        for(var i in data){     
            if(data[i].AreaCode.indexOf(second)==startIndex&&(!data[i].AreaCode.indexOf(first)&&level>1||level==1)){        
                data[i]['cityList'] = fn(data , data[i].AreaCode.substring(0,level*2) , second.substring(startIndex) , level+1);
                result.push(data[i]);
            }else if(!second&&data[i].AreaCode.indexOf('00')==-1&&!data[i].AreaCode.indexOf(first)){            
                result.push(data[i]);
            }
        }
        return result;
    }
    console.log(fn(citys));
    我自己做出来了<script type="text/javascript"> 
    var initialList = [{"AreaName":"江苏省","AreaCode":"320000"},{"AreaName":"南京市","AreaCode":"320100"},{"AreaName":"市辖区","AreaCode":"320101"},{"AreaName":"玄武区","AreaCode":"320102"},{"AreaName":"白下区","AreaCode":"320103"},{"AreaName":"秦淮区","AreaCode":"320104"},{"AreaName":"建邺区","AreaCode":"320105"},{"AreaName":"鼓楼区","AreaCode":"320106"},{"AreaName":"下关区","AreaCode":"320107"},{"AreaName":"浦口区","AreaCode":"320111"},{"AreaName":"栖霞区","AreaCode":"320113"},{"AreaName":"雨花台区","AreaCode":"320114"},{"AreaName":"江宁区","AreaCode":"320115"},{"AreaName":"六合区","AreaCode":"320116"},{"AreaName":"溧水县","AreaCode":"320124"},{"AreaName":"高淳县","AreaCode":"320125"},{"AreaName":"无锡市","AreaCode":"320200"},{"AreaName":"市辖区","AreaCode":"320201"},{"AreaName":"崇安区","AreaCode":"320202"},{"AreaName":"南长区","AreaCode":"320203"},{"AreaName":"北塘区","AreaCode":"320204"},{"AreaName":"锡山区","AreaCode":"320205"},{"AreaName":"惠山区","AreaCode":"320206"},{"AreaName":"滨湖区","AreaCode":"320211"},{"AreaName":"江阴市","AreaCode":"320281"},{"AreaName":"宜兴市","AreaCode":"320282"},{"AreaName":"徐州市","AreaCode":"320300"},{"AreaName":"市辖区","AreaCode":"320301"},{"AreaName":"鼓楼区","AreaCode":"320302"},{"AreaName":"云龙区","AreaCode":"320303"},{"AreaName":"九里区","AreaCode":"320304"},{"AreaName":"贾汪区","AreaCode":"320305"},{"AreaName":"泉山区","AreaCode":"320311"},{"AreaName":"丰县","AreaCode":"320321"},{"AreaName":"沛县","AreaCode":"320322"},{"AreaName":"铜山县","AreaCode":"320323"},{"AreaName":"睢宁县","AreaCode":"320324"},{"AreaName":"新沂市","AreaCode":"320381"},{"AreaName":"邳州市","AreaCode":"320382"},{"AreaName":"常州市","AreaCode":"320400"},{"AreaName":"市辖区","AreaCode":"320401"},{"AreaName":"天宁区","AreaCode":"320402"},{"AreaName":"钟楼区","AreaCode":"320404"},{"AreaName":"戚墅堰区","AreaCode":"320405"},{"AreaName":"新北区","AreaCode":"320411"},{"AreaName":"武进区","AreaCode":"320412"},{"AreaName":"溧阳市","AreaCode":"320481"},{"AreaName":"金坛市","AreaCode":"320482"},{"AreaName":"苏州市","AreaCode":"320500"},{"AreaName":"市辖区","AreaCode":"320501"},{"AreaName":"沧浪区","AreaCode":"320502"},{"AreaName":"平江区","AreaCode":"320503"},{"AreaName":"金阊区","AreaCode":"320504"},{"AreaName":"虎丘区","AreaCode":"320505"},{"AreaName":"吴中区","AreaCode":"320506"},{"AreaName":"相城区","AreaCode":"320507"},{"AreaName":"常熟市","AreaCode":"320581"},{"AreaName":"张家港市","AreaCode":"320582"},{"AreaName":"昆山市","AreaCode":"320583"},{"AreaName":"吴江市","AreaCode":"320584"},{"AreaName":"太仓市","AreaCode":"320585"},{"AreaName":"南通市","AreaCode":"320600"},{"AreaName":"市辖区","AreaCode":"320601"},{"AreaName":"崇川区","AreaCode":"320602"},{"AreaName":"港闸区","AreaCode":"320611"},{"AreaName":"海安县","AreaCode":"320621"},{"AreaName":"如东县","AreaCode":"320623"},{"AreaName":"启东市","AreaCode":"320681"},{"AreaName":"如皋市","AreaCode":"320682"},{"AreaName":"通州市","AreaCode":"320683"},{"AreaName":"海门市","AreaCode":"320684"},{"AreaName":"连云港市","AreaCode":"320700"},{"AreaName":"市辖区","AreaCode":"320701"},{"AreaName":"连云区","AreaCode":"320703"},{"AreaName":"新浦区","AreaCode":"320705"},{"AreaName":"海州区","AreaCode":"320706"},{"AreaName":"赣榆县","AreaCode":"320721"},{"AreaName":"东海县","AreaCode":"320722"},{"AreaName":"灌云县","AreaCode":"320723"},{"AreaName":"灌南县","AreaCode":"320724"},{"AreaName":"淮安市","AreaCode":"320800"},{"AreaName":"市辖区","AreaCode":"320801"},{"AreaName":"清河区","AreaCode":"320802"},{"AreaName":"淮安区","AreaCode":"320803"},{"AreaName":"淮阴区","AreaCode":"320804"},{"AreaName":"清浦区","AreaCode":"320811"},{"AreaName":"涟水县","AreaCode":"320826"},{"AreaName":"洪泽县","AreaCode":"320829"}]
    var reg1 = /(0){4}$/
    alert(initialList.length)
    var provinceArray = new Array();
    for (var i=0;i<initialList.length;i++)
    {
    if(reg1.test(initialList[i].AreaCode)){
           
       provinceArray.push(initialList[i]);
    }
    }
     
     
    var reg2 = /([1-9])(0){2}$/
    var cityArray = new Array();
    for (var i=0;i<initialList.length;i++)
    {
    if(reg2.test(initialList[i].AreaCode)){     
           cityArray.push(initialList[i]);
    }
    }var reg3 = /([1-9])$/
    var areaArray = new Array();
    for (var i=0;i<initialList.length;i++)
    {
    if(reg3.test(initialList[i].AreaCode)){     
           areaArray.push(initialList[i]);
    }
    }for(var m=0;m<provinceArray.length;m++){
    var mlist = new Array();
    for(var i=0;i<cityArray.length;i++)
    {   var clist  = new Array();
       for(var j=0;j<areaArray.length;j++){
       
       if((cityArray[i].AreaCode.toString()).substring(0,4)==(areaArray[j].AreaCode.toString()).substring(0,4)){
    clist.push(areaArray[j]);
            cityArray[i]['areaList'] = clist; 
       }
       }  
        if((provinceArray[m].AreaCode.toString()).substring(0,2)==(cityArray[i].AreaCode.toString()).substring(0,2)){
    mlist.push(cityArray[i]);
            provinceArray[m]['cityList'] = mlist; 
       }
    }
    }
    alert(JSON.stringify(cityArray))
    alert(JSON.stringify(provinceArray))</script>