2016-10-13 2 views
1

私が上で立ち往生しています私の割り当ての一部は次のとおりです。のToString()は

オーバーライドJSON>例hereでJValueとJsonValueクラスのためのToStringメソッド。それは読みやすいですので 出力がきれいにフォーマットする必要があります。

このコードでJValue ToStringメソッドをオーバーライドできます。

public override string ToString() { 
    return Type.ToString() + ": " + Value.ToString();   
} 

これは、正常に文字列としてTypeプロパティを返します。ただし、Valueプロパティは、「Json.JsonObject」として返されます。 (提供されたコードを介して上部に連結されています)。

私のインストラクターは、私はJsonValue基本クラスに行くと2番目の1を引き受けるように、この2つのオーバーライドで完了することができ、私たちに語りました。でも、私は派生クラス内の値にアクセスする方法を見つけ出すことはできません。

私が個別に各派生クラスのToStringメソッドをオーバーライドすることができますが、それは私の2オーバーライドの制限を超えて行くと、まだリストと辞書のために動作するようには思えません。

がうまくいけば、これはあまりにも漠然とではありませんが、それであれば、私は基本的にはちょうど2つのオーバーライドメソッドを書いて助けが必要なので、私はこのコードを実行した場合:

var json = new JValue { Object = new Dictionary<string, JValue>() }; 
json["name"] = new JValue("Joe Smith"); 
json["age"] = new JValue(31); 
if (json.Type == JType.Object) 
{ 
     foreach (var value in json.Object) 
     { 
      System.Console.WriteLine(json.ToString()) 
     } 
} 

それは各JTYPEとキーを返しますが値を辞書に1つずつ格納します。今私は、「オブジェクトのような出力を取得していますのよう

:。Json.JsonObject

任意の指導をいただければ幸いです

答えて

0

を以下の派生クラスにこれを追加します!JsonBool、JsonNumber、JsonString、

public override string ToString() 
{ 
    return Value.ToString(); 
} 

また、メインであなたが欲しい:

foreach (var value in json.Object) 
{ 
    System.Console.WriteLine(value.ToString()); 
} 

あなたがワン各値はオブジェクト全体ではありません。