覆盖JValue和Json类中的ToString()

时间:2016-10-13 02:03:22

标签: c# json tostring

我被指责的部分内容如下:

  

在JSON>示例here中重写JValue和JsonValue类的ToString方法。   输出应格式化,以便于阅读。

我可以使用此代码覆盖JValue ToString方法。

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

这成功地将Type属性作为字符串返回。但是,Value属性返回为“Json.JsonObject”。 (顺便提一下,提供的代码在顶部链接)。

我的导师告诉我们这可以用两个覆盖完成,所以我假设第二个将进入JsonValue基类。我无法弄清楚如何访问派生类中的值。

我可以单独覆盖每个派生类ToString方法,但这超出了我的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和键值。

截至目前,我的输出类似于“Object:Json.JsonObject。

非常感谢任何指导!

1 个答案:

答案 0 :(得分:0)

将此添加到以下派生类:JsonBool,JsonNumber,JsonString,

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

另外,在主要你想要:

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

您希望每个值都不是整个对象。