数据库递归查询出了分好类的LIST<实体类>类型的数据,不用js的情况下怎么转成多层的json格式呢,求解,谢谢

图片说明

遍历List 按照JSON格式拼接字符串
手机不能发评论 谢啦 采纳我就有c币
如果不考虑性能 还有有一些简单实现 只拿顶级菜单 展开时再获取下一级菜单
或者一次从数据库查询一级菜单 递归查询就拿到所有级别的菜单了

在后台处理成多层json对象再传回前台,个人觉得后台处理数据还简单点

补充:c#代码,只是大概思路,没测试
public list getList(objectList)
{
list newList;
foreach (var item in objectList)
{
list childList = result.Where(x => x.pid == item.id.ToString()).ToList();
if (ChildList.Count > 0)
{
item.ChildList=getList(item.childList)
}
newList.add(item);
}
return newList;
}

public main()
{
var resultList;
var rootList=objectList.Where(x => x.pid == null).ToList();
resultList=getList(rootList)
}
补充测试结果及修改代码
我用的是mvc+ef+mysql
数据库数据
图片说明
c#代码:
public ActionResult Index()
{
test1Entities test = new test1Entities();
List resultList=test.ces.ToList();
var rootList = resultList.Where(x => x.pid == null).ToList();
resultList = getList(rootList, resultList);
ViewBag.jsonStr = JsonConvert.SerializeObject(resultList);
return View();
}
public List getList(List objectList, List originList)
{
List newList=new List ();
foreach (var item in objectList)
{
List childList = originList.Where(x => x.pid == item.id).ToList();
if (childList.Count > 0)
{
item.childList = getList(childList, originList);
}
newList.Add(item);
}
return newList;
}


前台输出结果:
[{"childList":[{"childList":[{"childList":null,"id":4,"pid":2,"name":"ces4"}],"id":2,"pid":1,"name":"ces2"},{"childList":[{"childList":null,"id":5,"pid":3,"name":"ces5"}],"id":3,"pid":1,"name":"ces3"}],"id":1,"pid":null,"name":"ces"}]

写个父类获取子类的递归方法即可

public Result selectMarketingLbl() {
        Result result = new Result();
        List> list = DAO.selectByBaseId(937);// 查询子类sql
        list = getDate(list);
        result.setBeans(list);
        return result;
    }
    private List> getDate( List> list){
        for (Map map: list){
            List> childList =

DAO.selectByBaseId((String)map.get("Id"));// 查询子类sql
            if (childList != null && !childList.isEmpty()){
                getDate(childList);
            }
            map.put("children", childList);
        }
        return list;
    }

    把object  换成对应的实体类