浪子神剑 2016-02-10 14:47 采纳率: 0%
浏览 2618
已结题

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 2016-02-10 23:38
    关注
    评论
  • 浪子神剑 2016-02-11 00:25
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 页面调接口时加载卡住不响应
  • ¥35 用C语言解决编程问题
  • ¥15 unity硬件连接与使用
  • ¥15 鱼缸加热棒的数据分析或者实际案例也行
  • ¥15 postgresql11安装完成后,pgadmin无法启动
  • ¥15 (标签-无人机|关键词-Matlab代码)
  • ¥15 执行shell脚本提示参数太多
  • ¥15 困扰好久了,电脑的串口调试助手向单片机发送一个字符(如:字符‘1’到‘8’),单片机点亮对应的灯(如发送字符‘2’则点亮第2个灯)并给电脑回复信息:已点亮第x个灯(其中 x 要替换成对应的数字)
  • ¥15 求减少这个c++程序内存的解决方案
  • ¥30 改正代码,错误比较多