jquery - 在jquery中循环嵌套json

标签 jquery json

我有嵌套的 json 如下。我需要迭代 json 并且必须获取每个值。

{
    "processDefId": "xyz",
    "name": "name",
    "sla": "10",
    "hasChild": true,
    "child": [
        {
            "activityDefId": "siteSurveyDef",
            "activityName": "Site Survey",
            "isMandatory": "true",
            "isOptional": "false",
            "sla": "10",
            "sequence": "1",
            "hasChild": true,
            "child": [
                {
                    "activityDefId": "Begin",
                    "activityName": "Begin",
                    "isMandatory": "true",
                    "isOptional": "false",
                    "sla": "10",
                    "sequence": "1",
                    "hasChild": true
                },
                {
                    "activityDefId": "Site Survey2",
                    "activityName": "Site Survey2",
                    "isMandatory": "true",
                    "isOptional": "false",
                    "sla": "10",
                    "sequence": "1",
                    "hasChild": true
                }
            ]
        },
        {
            "activityDefId": "siteSurvey",
            "activityName": "Procurement",
            "isMandatory": "true",
            "isOptional": "false",
            "sla": "10",
            "sequence": "1",
            "hasChild": true,
            "child": [
                {
                    "activityDefId": "Begin",
                    "activityName": "Begin"
                },
                {
                    "activityDefId": "Site Survey",
                    "activityName": "Site Survey3",
                    "isMandatory": "true",
                    "isOptional": "false",
                    "sla": "10",
                    "sequence": "1",
                    "hasChild": true
                }
            ]
        },
        {
            "activityDefId": "siteSurvey",
            "activityName": "Provisioning",
            "isMandatory": "true",
            "isOptional": "false",
            "sla": "10",
            "sequence": "1",
            "hasChild": true,
            "child": [
                {
                    "activityDefId": "Begin",
                    "activityName": "Begin"
                },
                {
                    "activityDefId": "Site Survey",
                    "activityName": "Site Survey4",
                    "isMandatory": "true",
                    "isOptional": "false",
                    "sla": "10",
                    "sequence": "1",
                    "hasChild": true
                }
            ]
        }
    ]
}

我尝试像这样循环:

$.each(hiddenJson, function() {
    $.each(this, function(name, value) {
        //var sla = me.sla;//use `this` from outer scope
        //alert(sla);
        console.log(name + '=' + value);

    });  
});

我没有正确获得值(value)。有人可以建议吗?

最佳答案

好的递归你可以做到,

var j = {
    "processDefId": "xyz",
    "name": "name",
    "sla": "10",
    "hasChild": true,
    "child": [
        {
            "activityDefId": "siteSurveyDef",
            "activityName": "Site Survey",
            "isMandatory": "true",
            "isOptional": "false",
            "sla": "10",
            "sequence": "1",
            "hasChild": true,
            "child": [
                {
                    "activityDefId": "Begin",
                    "activityName": "Begin",
                    "isMandatory": "true",
                    "isOptional": "false",
                    "sla": "10",
                    "sequence": "1",
                    "hasChild": true
                },
                {
                    "activityDefId": "Site Survey2",
                    "activityName": "Site Survey2",
                    "isMandatory": "true",
                    "isOptional": "false",
                    "sla": "10",
                    "sequence": "1",
                    "hasChild": true
                }
            ]
        },
        {
            "activityDefId": "siteSurvey",
            "activityName": "Procurement",
            "isMandatory": "true",
            "isOptional": "false",
            "sla": "10",
            "sequence": "1",
            "hasChild": true,
            "child": [
                {
                    "activityDefId": "Begin",
                    "activityName": "Begin"
                },
                {
                    "activityDefId": "Site Survey",
                    "activityName": "Site Survey3",
                    "isMandatory": "true",
                    "isOptional": "false",
                    "sla": "10",
                    "sequence": "1",
                    "hasChild": true
                }
            ]
        },
        {
            "activityDefId": "siteSurvey",
            "activityName": "Provisioning",
            "isMandatory": "true",
            "isOptional": "false",
            "sla": "10",
            "sequence": "1",
            "hasChild": true,
            "child": [
                {
                    "activityDefId": "Begin",
                    "activityName": "Begin"
                },
                {
                    "activityDefId": "Site Survey",
                    "activityName": "Site Survey4",
                    "isMandatory": "true",
                    "isOptional": "false",
                    "sla": "10",
                    "sequence": "1",
                    "hasChild": true
                }
            ]
        }
    ]
};

function recursiveDecode(obj){

  $.each(obj, function(n, v) {

    if(typeof v === 'object'){
      recursiveDecode(v);
    }  
    else{
      console.log(n +'='+v);
    }

  });

};

recursiveDecode(j); 

关于jquery - 在jquery中循环嵌套json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31580294/

相关文章:

json - 为什么我要将 map 转换为 json,map 包含列表值,转换为 json 后什么都没有

javascript - 使用 JSON 多标记在 Google map 上进行标记聚类

java - twitter4j 4.0.2 getRawJSON() 返回 null

javascript - 在提交链接到 php 中的不同页面后保持模式打开

javascript - 链接内容添加了::after

jquery - 使用 JQuery 使用 CDATA 解析 XML

javascript - 如何从 jQuery 延迟传递参数

javascript - vb.net web api $.ajax 响应不是 json 对象

iphone - 带有 JSON 响应的 TextField 自动完成

javascript - 当鼠标悬停在元素 JS 或 Jquery 中时循环