最近因为要用树形菜单,需要ajax传一个如下结构的json字符串,于是写了以下函数,通过递归将LIST<Model>装换成json.
Model类是这样的:
public class Model
{
public string ID { get; set; }
public string Name { get; set; }
public string pID { get; set; }
}
主程序:
class Program
{
static void Main(string[] args)
{
List<Model> model = Init();
string json= GetList(model, "000");
Console.Write(json);
Console.Read();
}
//递归将LIST<Model>装换成json.
static public string GetList(List<Model> source,string PID)
{
StringBuilder json = new StringBuilder();
json.Append("[");
var query = from Model m in source
where m.pID == PID
select m;
List<Model> parentList = query.ToList<Model>();
foreach (Model node in parentList)
{
json.Append("{\"ID\":\"" + node.ID + "\",\"Name\":\"" + node.Name + "\",\"pID\":\"" + node.pID + "\",\"List\":" + GetList(source, node.ID) + "},");
}
if (parentList.Count > 0)
json.Remove(json.Length - 1, 1);
json.Append("]");
return json.ToString();
}<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
//给List<Model>赋值。
static public List<Model> Init()
{
List<Model> models = new List<Model>();
Model m1 = new Model { ID = "001", Name = "p1", pID = "000" };
Model m2 = new Model { ID = "002", Name = "p2", pID = "000" };
Model m3 = new Model { ID = "003", Name = "p3", pID = "000" };
Model m4 = new Model { ID = "004", Name = "z11", pID = "001" };
Model m5 = new Model { ID = "005", Name = "z12", pID = "001" };
Model m6 = new Model { ID = "006", Name = "z13", pID = "001" };
Model m7 = new Model { ID = "007", Name = "z111", pID = "004" };
Model m8 = new Model { ID = "008", Name = "z112", pID = "004" };
Model m9 = new Model { ID = "009", Name = "z121", pID = "005" };
Model m10 = new Model { ID = "0010", Name = "z131", pID = "006" };
Model m11 = new Model { ID = "0011", Name = "z21", pID = "002" };
Model m12 = new Model { ID = "0012", Name = "z211", pID = "0011" };
Model m13 = new Model { ID = "0013", Name = "z212", pID = "0011" };
Model m14 = new Model { ID = "0014", Name = "z1111", pID = "007" };
Model m15 = new Model { ID = "0015", Name = "z1112", pID = "007" };
Model m16 = new Model { ID = "0016", Name = "z1113", pID = "007" };
models.Add(m1); models.Add(m9);
models.Add(m2); models.Add(m10);
models.Add(m3); models.Add(m11);
models.Add(m4); models.Add(m12);
models.Add(m5); models.Add(m13);
models.Add(m6); models.Add(m14);
models.Add(m7); models.Add(m15);
models.Add(m8); models.Add(m16);
return models;
}
}