使用 JsonConvert 反序列化 Json 文件时进行调试

Debugging when deserializing a Json file with JsonConvert

有没有办法在反序列化时使用 JsonConvert 来“调试 Json 文件”?
如果正在处理的 Json 文件的行(或行组)可以打印为调试选项,那将非常有用。
否则,当 Json 文件反序列化为对象失败时,可能很难找出该文件有什么问题。

您可以实现自定义 TraceWriter,在反序列化过程中记录到控制台,就像这样。当然你也可以把它包装成一个 log4net 日志条目或者只是做任何你喜欢的事情。:

public class ConsoleTraceWriter : ITraceWriter
{    
    public TraceLevel LevelFilter
    {
        // trace all messages
        get { return TraceLevel.Verbose; }
    }

    public void Trace(TraceLevel level, string message, Exception ex)
    {
        if (ex != null) {
            Console.WriteLine(level.ToString() + ": " + message + " Ex: " + ex.Message);
        } else {
            Console.WriteLine(level.ToString() + ": " + message);
        }
    }
}

并在反序列化时设置

JsonConvert.DeserializeObject(myJson, new JsonSerializerSettings { TraceWriter = new ConsoleTraceWriter() });