用js将json转化为tree的数据

function getJsonModelTree(str={},path,jsonModelId,pid){
    //1,数字,2字符串,3对象,4array
    var jsonModelId = jsonModelId;
    var jsonField = [];
    var id = pid+1;
    for(var key in str)
    {
        var jsonValue = str[key];
        var item = {};
        item.id=id++;
        item.pid=pid;
        item.sensorId = getUrlParam("id");
        item.jsonModelId = jsonModelId;
        item.value = key;
        if(path == undefined ||  path ==''){
            item.title = key;
        }else{
            item.title = path+'.'+key;
        }
        if(typeof jsonValue == 'number'){
            item.type = 1;
        }else if (typeof jsonValue == 'string'){

            var isJson = true;
            var str2json={};
            try{
                str2json = JSON.parse(jsonValue);
            }catch (e) {
                isJson = false;
            }
            if(isJson){
                if(!Array.isArray(str2json)){
                    item.type = 3;
                    var resField= getJsonModelTree(str2json,item.title,jsonModelId,item.id);
                    item.children = resField;
                }else{
                    item.type = 4;
                    var resField= getJsonModelTree(jsonValue[0],item.title+ '[0]',jsonModelId,item.id);
                    item.children =[];
                    item.children = resField;
                }
            }
            item.type = 2;
        }else if (typeof jsonValue == 'object'){
            if(!Array.isArray(jsonValue)){
                item.type = 3;
                var resField= getJsonModelTree(jsonValue,item.title,jsonModelId,item.id);
                item.children =[];
                item.children = resField;
            }else{
                item.type = 4;
                var resField= getJsonModelTree(jsonValue[0],item.title+ '[0]',jsonModelId,item.id);
                item.children =[];
                item.children = resField;
            }
        }
        jsonField.push(item);
       }
    return jsonField;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容