Build administrative area via Json

    技术2022-05-19  19

    We want to build a json string to store the administrative area data, the format would bevar threeSelectData={"省份":{"val":"","items":{"城市":{"val":"","items":{"区县":""}}}},"河北":{"val":"130100","items":{"石家庄市":{"val":"130200","items":{"市辖区":"130101","长安区":"130102"}},"唐山市":{"val":"130300","items":{"市辖区":"130201","路南区":"130202"}},"秦皇岛市":{"val":"130400","items":{"市辖区":"130301","海港区":"130302"}},"邯郸市":{"val":"130500","items":{"市辖区":"130401","邯山区":"130402"}}}},"北京":{"val":"110000","items":{"市辖区":{"val":"110100","items":{"东城区":"110101","西城区":"110102"}},"县":{"val":"110200","items":{"昌平县":"110201","大兴县":"110202"}}}},"台湾":{"val":"710000","items":{}},"香港":{"val":"810000","items":{}}} :

     

    The solution should be :

    <mce:script type="text/javascript" src="json.js" mce_src="json.js"></mce:script> <mce:script type="text/javascript"><!-- function TmsAdZone(code, name) { this.childs = new Array(); this.code = code; this.name = name; this.toString = function() { return "Code: "+ this.code + " Name: " + this.name; } this.addChild = function(obj) { this.childs.push(obj); }; this.children = function() { return this.childs; } } function showChildren(zone) { alert("Zone [" + zone.name + "]/n---------------------------------/n" + zone.children()); } var adZoneArray = new Array(); var a = new TmsAdZone("130100", "河北"); var b = new TmsAdZone("130200", "石家庄市"); var c = new TmsAdZone("130300", "唐山市"); var d = new TmsAdZone("130400", "秦皇岛市"); var e = new TmsAdZone("130500", "邯郸市"); var f = new TmsAdZone("130101", "市辖区"); var h = new TmsAdZone("130102", "长安区"); var i = new TmsAdZone("130201", "市辖区"); var j = new TmsAdZone("130202", "路南区"); var k = new TmsAdZone("130301", "市辖区"); var l = new TmsAdZone("130302", "海港区"); var m = new TmsAdZone("130401", "市辖区"); var n = new TmsAdZone("130402", "邯山区"); a.addChild(b); a.addChild(c); a.addChild(d); a.addChild(e); b.addChild(f); b.addChild(h); c.addChild(i); c.addChild(j); d.addChild(k); d.addChild(l); e.addChild(m); e.addChild(n); var a1 = new TmsAdZone("110000", "北京"); var b1 = new TmsAdZone("110100", "市辖区"); var c1 = new TmsAdZone("110200", "县"); var d1 = new TmsAdZone("110101", "东城区"); var e1 = new TmsAdZone("110102", "西城区"); var f1 = new TmsAdZone("110201", "昌平县"); var h1 = new TmsAdZone("110202", "大兴县"); a1.addChild(b1); a1.addChild(c1); b1.addChild(d1); b1.addChild(e1); c1.addChild(f1); c1.addChild(h1); var a2 = new TmsAdZone("710000", "台湾"); var a3 = new TmsAdZone("810000", "香港"); adZoneArray.push(a); adZoneArray.push(a1); adZoneArray.push(a2); adZoneArray.push(a3); function renderJson(adZoneArray) { var len = adZoneArray.length; var result = new Object(); var a = {"区县": ""}; var b = {"val": "", items: a}; var c = {"城市": b}; var d = {"val": "", items: c}; result["省份"] = d; for(var i=0; i<len; i++) { zone = adZoneArray[i]; var name = zone.name; var jsonObject = new Object(); jsonObject["val"] = zone.code; jsonObject["items"] = getItemsByZone(zone); result[name] = jsonObject; } return result.toJSONString(); } function getItemsByZone(zone) { var len = zone.children().length; var result = new Object(); for(var i=0; i<len; i++) { var name = zone.children()[i].name if(zone.children()[i].children().length == 0) { result[name] = zone.children()[i].code; } else { var jsonObject = new Object(); jsonObject["val"] = zone.children()[i].code jsonObject["items"] = getItemsByZone(zone.children()[i]); result[name] = jsonObject; } } return result; } alert("Result:/n/n------------------------------------------------------------------/nvar threeSelectData=" + renderJson(adZoneArray)); // --></mce:script>

     

    Of course, you should download the json.js from json.org first.


    最新回复(0)