【发布时间】:2017-02-21 23:50:28
【问题描述】:
我坚持的部分任务如下:
在 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.
任何指导将不胜感激!
【问题讨论】: