将对象转换为字符串

时间:2013-06-14 10:05:05

标签: c#

这是我对象的内容:

-       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 个答案:

答案 0 :(得分:5)

您需要在班级中使用override ToString()方法。

  

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

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

答案 1 :(得分:0)

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

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

否则,您将始终看到类名作为基础ToString()

的结果

答案 2 :(得分:0)

您可以覆盖班级ItemTree

ToString Method

或者您可以尝试使用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);

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