0

这是我的对象的内容:

-       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

但我想将整个树结构转换为字符串。这个怎么做?

4

4 回答 4

5

您需要覆盖类中的ToString()方法。

创建自定义类或结构时,应重写 ToString 方法,以便向客户端代码提供有关您的类型的信息。

您可以使用XmlSerializer将对象序列化为 XML。

于 2013-06-14T10:06:17.697 回答
0

您需要覆盖该ToString方法并在那里打印您的树表示

public class ItemTree
{
   public override string ToString()
   {
      return "Tree " + id +....
   }
}

否则,您将始终看到类名作为 base ToString() 的结果

于 2013-06-14T10:06:35.773 回答
0

您可以覆盖类的ToString 方法ItemTree

或者您可以尝试使用json-net进行序列化

string json = JsonConvert.SerializeObject(tree);
于 2013-06-14T10:07:26.707 回答
0

如果您重写ToString方法,您的实现将被调用 ToString 的其他代码使用,因为它是标准方法(继承自 Object)。

您可以选择实现一种新方法。

无论哪种方式,为避免手动更新您的方法,您可以使用 Json.Net 生成一个字符串,如下所示:

string str = JsonConvert.SerializeObject(someObject);

这是文档中的示例:

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);

Nuget 包:http ://nuget.org/packages/Newtonsoft.Json/

于 2013-06-14T10:14:44.640 回答