Slickgrid如何避免对JSON.stringify(dataView.getGroups())的循环投诉

时间:2013-10-11 01:38:25

标签: jquery json slickgrid dataview

我想使用JSON.stringify方法将slickgrid组数据转换为文本并发布到服务器。但是由于JSON对象是循环结构,它不起作用:

我使用如下代码:

grps=JSON.stringify(dataView.getGroups()));

到目前为止,我有没有其他方法可以捕获当前数据视图中的json结果或者对getGroups()对象进行字符串化?

我设法通过

获取dataView的项目
$.each(ar,function(index,value){
    db+=JSON.stringify(dataView.getItemById(value))+",";
    //db.push(dataView.getItemById(value));
    //console.log("row item: " + value+",data:"+JSON.stringify(dataView.getItemById(value)));
});

但它不是我想要的结果,因为它不能反映json字符串中的嵌套组结构。

感谢帮助

1 个答案:

答案 0 :(得分:0)

我设法通过使用foreach将其转换为字符串并手动组合它来解决此要求: 不需要的一些列只是忽略它。

function dumpgroup2json(obj,lv){
    var rs="[";
    $.each(obj,function(i,v){
        rs+="{";
        $.each(v,function(i1,v1){


        //  console.log("index: "+i+", 2ndlevel: " +i1+": "+v1);
                if(i1=="rows"){
                    if(v1)
                        rs=rs+' "rows" : ' +dumprow2json(v1) + ',';
                    }
                    else if(i1=="groups"){
                        if(v1)
                            rs=rs+' "groups_'+lv+'" : ' +dumpgroup2json(v1,(lv+1)) + ',';

                    }
                    else if (i1=="level" ||i1=="count" ||i1=="value" || i1=="title"  )
                        rs+='"'+i1+'" : "'+v1+'",';             

        });
        rs=rs.substr(0,rs.length-1)+"";

        rs+="},";
    });
        rs= rs.substr(0,rs.length-1)+"]";
    //console.log(rs);
    return rs;

}