Key为数字的Json数据标准化成标准Json格式
在平时的开发过程中,经常遇到形如:{"1": {"name": "北京","city": {"1": {"name": "北京","area": {"92": "西城区"}},"1098": {"name": "怀柔","area": {}}}}} 的JSON格式数据,但是此类数据在后端语⾔,⽐如说.NET上,就不能很好地被反序列化,为此我们需要对其进⾏处理。我们处理遇到的主要问题是如何拿出Key为数字的Json数据,联想到将JSON字符串转换为对象后,JSON的key为对象的属性,我们可以利⽤遍历属性的⽅式,取出所有的Key,再组装成标准的"id":"value"的⽅式。OK,话不多说,开始动⼿去做。
1var provinceList =[];
2var jso = "{\"1\": {\"name\": \"北京\",\"city\": {\"1\": {\"name\": \"北京\",\"area\": {\"92\": \"西城区\"}},\"1098\": {\"name\": \"怀柔\",\"area\": {}}}}}";
3var data = eval('(' + jso + ')');
4for (var prop in data) {
5var province = {};
6 province.id = prop;
7 province.name = data[prop].name;
8 province.city = [];
9for (var cityprop in data[prop].city) {
10var currentcity = {};
11 currentcity.id = cityprop;
12 currentcity.name = data[prop].city[cityprop].name;
13 currentcity.area = [];
14for (var areaprop in data[prop].city[cityprop].area) {
15var currentarea = {};
16 currentarea.id = areaprop;
17 currentarea.name = data[prop].city[cityprop].area[areaprop];
json转换对象
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格式的⽂件都更⽅便了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论