这是我对象的内容:
- tree {ItemTree} ItemTree
id "0" string
im0 null string
- item Count = 1 System.Collections.Generic.List<ItemTree>
- [0] {ItemTree} ItemTree
id "F_1" string
im0 "something.gif" string
+ item Count = 16 System.Collections.Generic.List<ItemTree>
parentId "0" string
text "someName" string
+ Raw View
parentId null string
text "" string
我动态构建它,因此它更大。
这是该课程的一个对象:
public class ItemTree
{
public String id { get; set; }
public String text { get; set; }
public List<ItemTree> item { get; set; }
public string im0 { get; set; }
public String parentId { get; set; }
}
因此,类ItemTree有一个属性,它本身就是一个ItemTree对象的列表。
我想将其转换为字符串。当我做:
tree.ToString()
我只得到:
tree.ToString() "ItemTree" string
但我想将整个树结构转换为字符串。怎么做?
答案 0 :(得分:5)
您需要在班级中使用override ToString()方法。
创建自定义类或结构时,应覆盖ToString方法,以便向客户端代码提供有关类型的信息。
您可以使用XmlSerializer将对象序列化为XML。
答案 1 :(得分:0)
您需要覆盖ToString
方法并在那里打印树表示
public class ItemTree
{
public override string ToString()
{
return "Tree " + id +....
}
}
否则,您将始终看到类名作为基础ToString()
的结果答案 2 :(得分:0)
您可以覆盖班级ItemTree
或者您可以尝试使用json-net
进行序列化string json = JsonConvert.SerializeObject(tree);
答案 3 :(得分:0)
如果覆盖ToString方法,那么调用ToString的其他代码将使用您的实现,因为它是标准方法(继承自Object)。
您可以选择实施新方法。
无论哪种方式,为避免手动更新您的方法,您可以使用Json.Net生成一个字符串,如下所示:
string str = JsonConvert.SerializeObject(someObject);
以下是from the documentation示例:
Product product = new Product();
product.Name = "Apple";
product.ExpiryDate = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };
string output = JsonConvert.SerializeObject(product);
//{
// "Name": "Apple",
// "ExpiryDate": "2008-12-28T00:00:00",
// "Price": 3.99,
// "Sizes": [
// "Small",
// "Medium",
// "Large"
// ]
//}
Product deserializedProduct = JsonConvert.DeserializeObject<Product>(output);