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

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 に答える