使用 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() });
有没有办法在反序列化时使用 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() });