我想使用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字符串中的嵌套组结构。
感谢帮助
答案 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;
}