Key为数字的Json数据标准化成标准Json格式


   在平时的开发过程中,经常遇到形如:{"1": {"name": "北京","city": {"1": {"name": "北京","area": {"92": "西城区"}},"1098": {"name": "怀柔","area": {}}}}的JSON格式数据,但是此类数据在后端语言,比如说.NET上,就不能很好地被反序列化,为此我们需要对其进行处理。我们处理遇到的主要问题是如何拿出Key为数字的Json数据,联想到将JSON字符串转换为对象后,JSON的key为对象的属性,我们可以利用遍历属性的方式,取出所有的Key,再组装成标准的"id":"value"的方式。OK,话不多说,开始动手去做。  

 1   var provinceList =[];
 2        var jso = "{\"1\": {\"name\": \"北京\",\"city\": {\"1\": {\"name\": \"北京\",\"area\": {\"92\": \"西城区\"}},\"1098\": {\"name\": \"怀柔\",\"area\": {}}}}}";   
 3        var data = eval('(' + jso + ')');
 4        for (var prop in data) {
 5             var province = {};
 6             province.id = prop;
 7             province.name = data[prop].name;
 8             province.city = [];
 9             for (var cityprop in data[prop].city) {
10                 var currentcity = {};
11                 currentcity.id = cityprop;
12                 currentcity.name = data[prop].city[cityprop].name;
13                 currentcity.area = [];
14                 for (var areaprop in data[prop].city[cityprop].area) {
15                     var currentarea = {};
16                     currentarea.id = areaprop;
17                     currentarea.name = data[prop].city[cityprop].area[areaprop];
18                     currentcity.area.push(currentarea);
19                 }
20                 province.city.push(currentcity);
21 
22             }
23             provinceList.push(province);
24         }

至此我们可以到标准的JSON : [{"id":"1","name":"北京","city":[{"id":"1","name":"北京","area":[{"id":"92","name":"西城区"}]},{"id":"1098","name":"怀柔","area":[]}]}]。  有了标准JSON,无论是反序列化成对象还是转换为XML格式的文件都更方便了。

 

       
 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM