扩展一个jquery mappingJSON 映射方法

        最近在做一个项目时,大量的用到JSON数据格式与服务端进行交互,但是遇到一个问题服务端一修改JSON key , 于是客户端也需要进行修改,如果多个地方使用就要改多处。于是想到是不是有成熟的JSON映射方法,去搜了一下也没有找到合适方法,所以只能自己写了一个jquery 扩展jsonMapping方法,使用是没有问题,但是在效率上是否能提高,记各位多指点。


//extend jquery 'mappingJSON' method
$.extend({
    /** "mappingJSON"
    * data: need to mapping of the original data
    * rule: mapping rule
    * container: store mapping after data
    **/
    mappingJSON: function (data, rule, container) {

        for (var i = 0; i < data.length; i++) {
            var temp = { };
            var item = data[i];

            for (var key in item) {
                var newKey = rule[key] || key;

                if ($.type(item[key]) === "array" && item[key].length > 0) {
                    temp[newKey] = [];
                    this.mappingJSON(item[key], rule, temp[newKey]);
                } else {
                    temp[newKey] = item[key];
                }
            }
            container.push(temp);
        }

        return container;
    }
});


考虑到JSON是一个树结构所以运用到递归算法

方法使用:

  var rule = { MenuId: "id", MenuName: "name", Url: "menu_url", Children: "children" };  //映射规则 key:服务端字段 value:客户端字段

  var d = $.mappingJSON(data, rule, []); 参数1: 映射的数据, 参数2:映射规则, 参数三:临时存放的容器

  mappingJSON 方法是一个深度拷贝方法,所以不用担心会改变data的key属性




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值