首页 新闻 会员 周边 捐助

求高手指教:怎么把Json数据转成Json树状结构!

0
悬赏园豆:20 [已解决问题] 解决于 2014-09-16 15:13

原Json数据

  1. [  
  2.     {"id":"4","pid":"1","name":"大家电"},  
  3.     {"id":"5","pid":"1","name":"生活电器"},  
  4.     {"id":"1","pid":"0","name":"家用电器"},  
  5.     {"id":"2","pid":"0","name":"服饰"},  
  6.     {"id":"3","pid":"0","name":"化妆"},  
  7.     {"id":"7","pid":"4","name":"空调"},  
  8.     {"id":"8","pid":"4","name":"冰箱"},  
  9.     {"id":"9","pid":"4","name":"洗衣机"},  
  10.     {"id":"10","pid":"4","name":"热水器"},  
  11.     {"id":"11","pid":"3","name":"面部护理"},  
  12.     {"id":"12","pid":"3","name":"口腔护理"},  
  13.     {"id":"13","pid":"2","name":"男装"},  
  14.     {"id":"14","pid":"2","name":"女装"},  
  15.     {"id":"15","pid":"7","name":"海尔空调"},  
  16.     {"id":"16","pid":"7","name":"美的空调"},  
  17.     {"id":"19","pid":"5","name":"加湿器"},  
  18.     {"id":"20","pid":"5","name":"电熨斗"}  
  19. ]

转成 Json树状结构

  1. [  
  2.     {"id":"1","pid":"0","name":"家用电器", "chindren":[  
  3.         {"id":"4","pid":"1","name":"大家电", "chindren":[  
  4.             {"id":"7","pid":"4","name":"空调", "chindren":[  
  5.                 {"id":"15","pid":"7","name":"海尔空调"},  
  6.                 {"id":"16","pid":"7","name":"美的空调"}  
  7.             ]},  
  8.             {"id":"8","pid":"4","name":"冰箱"},  
  9.             {"id":"9","pid":"4","name":"洗衣机"},  
  10.             {"id":"10","pid":"4","name":"热水器"}  
  11.         ]},  
  12.         {"id":"5","pid":"1","name":"生活电器","chindren":[  
  13.             {"id":"19","pid":"5","name":"加湿器"},  
  14.             {"id":"20","pid":"5","name":"电熨斗"}  
  15.         ]}  
  16.     ]},  
  17.     {"id":"2","pid":"0","name":"服饰","chindren":[  
  18.         {"id":"13","pid":"2","name":"男装"},  
  19.         {"id":"14","pid":"2","name":"女装"}  
  20.     ]},  
  21.     {"id":"3","pid":"0","name":"化妆","chindren":[  
  22.         {"id":"11","pid":"3","name":"面部护理"},  
  23.         {"id":"12","pid":"3","name":"口腔护理"}  
  24.     ]}  
  25. ]    

PS:在后台实现转换Json树状结构

加加貝的主页 加加貝 | 菜鸟二级 | 园豆:274
提问于:2014-09-16 13:25
< >
分享
最佳答案
0

你有定义Model吗?在Model里定义好这个关系,并往Children里添加数据,最后,对根对象使用转换Json的方法就达到目的了。

收获园豆:20
519740105 | 大侠五级 |园豆:5810 | 2014-09-16 13:51

没有定义Model

加加貝 | 园豆:274 (菜鸟二级) | 2014-09-16 13:57

@Summer丿文: 或者实体对象也没有?

如果这些都没有,要想拼接的话,相对就很难了。

519740105 | 园豆:5810 (大侠五级) | 2014-09-16 14:02

@519740105: 你有实体对象生产Json树状结构的案例吗?

加加貝 | 园豆:274 (菜鸟二级) | 2014-09-16 14:09
//递归函数,生成树
private IList GetCategoryList(IEnumerable<Category> categories)
{
    var list = new List();
    foreach(var category in categories)
    {
        var children = null;
        if(category.Children.Count > 0)
        {
            children = GetCategoryList(category.Children);
        }
        list.Add(
            new {
                id = category.Id,
                pid = category.Pid,
                name = category.Name,
                children = children
            };
        );
    }
    return list;
}

//调用:
var categories = new List<Category>();
var list = GetCategoryList(categories);
var json = Json(list);

 

@Summer丿文: 

一样的。

只是实体的属性可能很多,json序列化的时候会多很多内容,可以通过JsonIgnoreAttribute特性忽略。

使用JsonIgnore的时候,需要引用第三方的模块Json。.net本身内置了json序列化,是不一定要引用第三方模块的。

在不想定义Model,又不想引用Json模块(实际上,还需要修改实体)的情状下,你可以:

 

 

 

 

519740105 | 园豆:5810 (大侠五级) | 2014-09-16 14:49

@519740105: 那在Model中定义还是不是简单一点呢?

加加貝 | 园豆:274 (菜鸟二级) | 2014-09-16 14:52

@519740105: 那在Model中定义好是不是简单一点呢?

加加貝 | 园豆:274 (菜鸟二级) | 2014-09-16 14:58

@Summer丿文: 定义Model后,因为强类型(有类定义了,不再是匿名类了),比起这样写,肯定要好点,但如果只是这一个需求,不一定要定义Model。

519740105 | 园豆:5810 (大侠五级) | 2014-09-16 15:00

@519740105: 恩恩,麻烦您了!

加加貝 | 园豆:274 (菜鸟二级) | 2014-09-16 15:12
其他回答(3)
0

1.自己遍历,

2.linq语法,

这个东西就是几个循环的事情..跟第三方插件有什么关系?

吴瑞祥 | 园豆:29449 (高人七级) | 2014-09-16 13:38

新手不太懂!

支持(0) 反对(0) 加加貝 | 园豆:274 (菜鸟二级) | 2014-09-16 13:57
0

http://hi.baidu.com/1039580989/item/6281861aab2100f5756a8407

Yu | 园豆:12990 (专家六级) | 2014-09-16 14:26

我不要在前台转的,我不会java,我用的是.net

支持(0) 反对(0) 加加貝 | 园豆:274 (菜鸟二级) | 2014-09-16 14:42
0

有没有纯java代码写的

跨O阶梯 | 园豆:202 (菜鸟二级) | 2015-11-06 19:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册