您的位置:首页 > Web前端 > JavaScript

把表单转换为JSON对象

2012-06-25 16:37 148 查看
Object convert(Object formValues) 表单值 对象值
{abc:'123'}{abc:'123'}
{abc.ab:'123'}{abc:{ab:'123'}}
{abc[0]:'123', abc[1]:'234'}{abc:['123', '234']}
{abc[0].ab:'123', abc[1].bc:'234'}{abc:[{ab:'123'}, {bc:'234'}]}
Parameters: {Object} formValues 表单对象 @returns {Object} 真正的对象  
function convert(formValues) {
    var result = {};
    for ( var name in formValues) {
        var value = formValues[name];
        if (name.indexOf('.') < 0) {
            result[name] = value;
            continue;
        } else {
            var simpleNames = name.split('.');
            // 构建命名空间
            var obj = result;
            for ( var i = 0; i < simpleNames.length - 1; i++) {
                var simpleName = simpleNames[i];
                if (simpleName.indexOf('[') < 0) {
                    if (obj[simpleName] == null) {
                        obj[simpleName] = {};
                    }
                    obj = obj[simpleName];
                } else { // 数组
                    // 分隔
                    var arrNames = simpleName.split('[');
                    var arrName = arrNames[0];
                    var arrIndex = parseInt(arrNames[1]);
                    if (obj[arrName] == null) {
                        obj[arrName] = []; // new Array();
                    }
                    obj = obj[arrName];
                    if (obj[arrIndex] == null) {
                        obj[arrIndex] = {}; // new Object();
                    }
                    obj = obj[arrIndex];
                }
            }
            obj[simpleNames[simpleNames.length - 1]] = value;
        }
    }
    return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: