2 aya001001 aya001001 于 2016.02.10 22:47 提问

nodejs json怎么转变为这种父子关系的数组呢?

我想把这个json转变为如下的父子关系的数组,使用js中的递归要怎么操作呢?
json格式:

 {
    "fruit": [
        {
            "name": "水果" 
        },
        {
            "jiangguolei": [
                {
                    "name": "浆果类"
                },
                {
                    "caomei": "草莓"
                },
                {
                    "lanmei": "蓝莓"
                }
            ]
        },
        {
            "ganjulei": [
                {
                    "name": "柑橘类"
                },
                {
                    "miju": "蜜橘"
                },
                {
                    "shatangju": "砂糖橘"
                }
            ]
        },
        {
            "other": "其它"
        }
    ]
}

转换后,相对应的父子关系的数组如下:

 [
'fruit',
'fruit/jiangguolei',
'fruit/jiangguolei/caomei',
'fruit/jiangguolei/lanmei',
'fruit/ganjulei',
'fruit/ganjulei/miju',
'fruit/ganjulei/shatangju',
'fruit/other',
]

这是我用递归写的,不行,请指教:

 function isArray(obj) {  
  return Object.prototype.toString.call(obj) === '[object Array]';   
}

function isObject(obj) {  
  return Object.prototype.toString.call(obj) === '[object Object]'; 
}

function changeArr(json, fpath){
    var tmpArr = [];
    for ( var p in json ){
        if(p !== 'name'){
            tmpArr.push(fpath + '/' + p);
        }

        if(isArray(json[p])){
            // fpath = p;
            changeArr(json[p], p);
        }else if(isObject(json[p])){
            changeArr(json[p], p);
        }else{

        }

    }
    return tmpArr;
}
console.log(changeArr(file, ''));

2个回答

devmiao
devmiao   Ds   Rxr 2016.02.11 07:38
aya001001
aya001001 @苏小喵,这个是纯的json转字符串的方法
接近 2 年之前 回复
aya001001
aya001001   2016.02.11 08:25

@苏小喵,这个是纯的json转字符串的方法

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!