在网页上使用Jquery显示JSON对象元素

时间:2013-04-02 12:26:04

标签: jquery json

我是Jquery和webapplication开发的新手, 我有一个JSON文件定义为下面的对象 我想阅读它并在网页上以HTML元素显示它的元素 对于下面的JSON文件,我想要输出如下:

            A-1
            AA-0
            AB-0
            AAA-0
            AAB-2
            ABA-0
            ABB-1 

稍后我计划在点击事件

的当前组件下显示组件及其状态

我写了下面的代码

            <!DOCTYPE html>
            <html>
            <head>

                <script src="jquery-1.9.1.js"></script>
            </head>
            <body>
              <div id="result">

            </div>
            <script>
            var obj = {
                        "component": "A",
                        "status": 0,
                        "children": [
                            {
                                "component": "AA",
                                "status": 0,
                                "children": [
                                    {
                                        "component": "AAA",
                                        "status": 0,
                                        "children": []
                                    },
                                    {
                                        "component": "AAB",
                                        "status": 2,
                                        "children": []
                                    }
                                ]
                            },
                            {
                                "component": "AB",
                                "status": 0,
                                "children": [
                                    {
                                        "component": "ABA",
                                        "status": 0,
                                        "children": []
                                    },
                                    {
                                        "component": "ABB",
                                        "status": 1,
                                        "children": []
                                    }
                                ]

                            }
                        ]
            };
            //Start function
            $(function() {
                var result = $('#result');
                alert("hello");
                procedure(obj);
            });

            //Function to display the list of children of a given object
            function display(dref){

                result.append('<div>' +  dref.component + ' - '+ dref.status +'</div>');    
                $.each(dref.children, function(i, v){
                result.append('<div>' +  v.component + ' - '+ v.status +'</div>');
            });
            };

            //Recursive function to repeatedly check for children of every component
            function procedure(pref){
                display(pref);
                if(pref.children not null)
                {
                    $.each(pref.children, function(i, v){
                    procedure(children)

                    }    
            }   
            };
            </script> 
            </body>
            </html>

某些地方存在语法错误,任何人都可以帮助我获取所需的输出

2 个答案:

答案 0 :(得分:1)

尝试

$(function(){
    var $result = $('#result');
    function process(obj, flag){
        if(!flag){
            $('<li/>').text(obj.component + '-'+obj.status).appendTo($result);
        }

        if(obj.children){
            $.each(obj.children, function(i, v){
                $('<li/>').text(this.component + '-'+this.status).appendTo($result);
            });
            $.each(obj.children, function(i, v){
                process(this, true);
            });
        }
    }

    process(obj);

});

演示:Fiddle

答案 1 :(得分:1)

你在找这个:

var result_temp = "";
    function procedure(pref) {
        result_temp = result_temp + pref.component + "-" + pref.status+"<br/>";
        if (pref.children != null) {
            $.each(pref.children, function (i, v) {
                //alert(JSON.stringify(v));
                procedure(v);

            });
        }
    }

    $(document).ready(function () {
        procedure(obj); 
     $("#answer").html(result_temp);
    });

这里“#answer”是你的结果div。