扩展一个jquery mappingJSON 映射方法

来源:互联网 发布:java 类构造器 编辑:程序博客网 时间:2024/06/05 21:02

        最近在做一个项目时,大量的用到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属性




原创粉丝点击