第一中方式是直接用开源的json库,然后在后台定义更这个josn相匹配的类对象,然后用json库转换,这样的好处是转换出来没有错误,坏处是存在大量的装箱和拆箱操作。
第二种,在c#中json格式其实就是一个字符串,所以可以直接string.format("[{{name:name,code:{0}}}]","code");这样的方法去拼装,这样做好处是可以随意拼装而不用定义复杂的对象类,少了很多的装箱/拆箱操作。坏处是一旦出错或需要修改时变的相对困难,且可读性不够好。
嗯,首先谢谢你详细的回答。json开源库是将对象转换为json字符串,是针对于单个对象,或者有一定规律的循环对象来的,而我这里是无限极子集,就是子集下面还可能有children,用json开源库应该很难
@奋斗ITan_yxing: 只要你的数据结构正确,无限级的对象,合起来还是一个对象,所以这个转换还是可以的
@az235:我现在正在做部门组织架构(包含子部门和孙子部门,可能有很多个孙子部门),那麻烦您给我相对较容易的一个思路
@奋斗ITan_yxing: 部门实体类中影视一个子部门的实体类,就是链表的数据结构
个人觉得更够定义好一个实体类,一切都OK了
实体类?定义树结构的属性和方法吗?然后将封装成对象,最后处理对象吗
@奋斗ITan_yxing:
public class Item { public int id{get;set;} public string code{get;set;} public string name{get;set;} public string addr{get;set;} public string col4{get;set;} public iconCls{get;set;} public List<Item>{get;set;} }
List<Item> list = new List<Items>();
你把list转换成JSON,就是你想要的了
问题已经解决,谢了
@奋斗ITan_yxing: 请问你是怎么解决的?能不能共享一下
无限级树叉不是常规的数据存储形式,我们大多数时间接触的数据存储均为链表形式的。
首先,类的数据存储形势基本上可以确定为链表形式,因此用类来表示一个树叉,通常的定义都包含{键,父键,值以及其他属性}。
其次要考虑的,就是如何将链表形式的数据拼接成字符串,循环迭代是个不错的方法。
就是拼接的时候考虑起来很麻烦,有没有一种好的组件或者插件丢一个json就能够自动显示的?
@奋斗ITan_yxing: 我目前接触的TreeView控件比较少,像Asp.Net的TreeView、JQuery.treeview,还有一个网上比较流行的prototype框架的jsTreeView都需要自己使用链表结构数据,通过迭代来构建树叉,用于显示。
另外,你现在是有链表结构的数据,希望拼接成树杈结构的Json?还是说,你有树叉结构的Json,希望有插件直接展示这个树叉?
问题已经解决,谢了
-------------------------------------------------------------
详细解决方案见:http://www.iteye.com/topic/1122125
-------------------------------------------------------------