我为多级菜单创建了课程。它运作良好。但现在我希望Menu类转换为JSON对象以便在angularjs中使用。
我有二级课
class Menu
{
private List<Item> Items = new List<Item>();
}
class Item
{
public int Id { get; set; }
public int Level { get; set; }
public string Title { get; set; }
public string NavigateUrl { get; set; }
public Menu Child { get; set; }
}`
我需要创建Menu的JSON对象,其中Menu类包含Item的List,Item类包含Menu。
JavaScriptSerializer.Serialize仅使用一个级别。 我是否必须实现任何类型的接口或更改可能进行序列化的类?
答案 0 :(得分:2)
您的主要问题似乎是您的Menu类有一个内部私有变量,其中包含Item对象列表,并且该列表无法通过外部代码访问。
Javascript序列化程序只能序列化类的公共属性。
如果您使用属性获取器公开访问您的菜单项,请执行以下操作:
class Menu
{
private List<Item> _items = new List<Item>();
public List<Item> Items
{
get { return _items; }
set { _items = value; }
}
}
它应该有用。
您的Item
课程已由公共媒体资源组成,因此应该顺序排列。
答案 1 :(得分:0)
如果我理解你的问题,你需要做下一步:
[DataContract]
public class Menu
{
[DataMember]
private List<Item> Items = new List<Item>();
}
[DataContract]
public class Item
{
[DataMember]
public int Id { get; set; }
[DataMember]
public int Level { get; set; }
[DataMember]
public string Title { get; set; }
[DataMember]
public string NavigateUrl { get; set; }
[DataMember]
public Menu Child { get; set; }
}
之后你可以使用:
var menu = new Menu();
/* add items */
var serializer = new JavaScriptSerializer();
var serializedResult = serializer.Serialize(menu);
如果我在某处错了,请纠正我